home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60d / FARCALL.LST < prev    next >
File List  |  1999-01-03  |  81KB  |  2,176 lines

  1. FAR CALL Interface List        Release 60        Last change 03jan99
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3.  
  4. =============================================
  5. >CALL 0000h:0000h - Sample Entry
  6. >Program: description of the program(s) providing the API
  7. >InstallCheck:    how to determine CALL address if variable, whether it is
  8. >      available if address is fixed
  9. >Note:    any notes related to the API
  10. >SeeAlso: related APIs, and interrupt entries for this API in INTERRUP.*
  11. >
  12. >Call entry point with:
  13. >    input registers
  14. >Return: result registers
  15. >
  16. >Format of data:
  17. >Offset    Size    Description
  18. > 00h    ...    ...
  19. =============================================
  20.  
  21. --------D-@00600000--------------------------
  22. CALL 0060h:0000h - Eagle MS-DOS v1.25 IO.SYS - INITIALIZE
  23. InstallCheck:    MS-DOS v1.25 must be installed
  24. Note:    this function should only be called by MSDOS.SYS
  25. SeeAlso: @0060h:0003h,@0060h:0039h
  26. --------D-@00600003--------------------------
  27. CALL 0060h:0003h - Eagle MS-DOS v1.25 IO.SYS - CHECK FOR KEYSTROKE
  28. InstallCheck:    MS-DOS v1.25 must be installed
  29. Note:    does not return extended keystrokes
  30. SeeAlso: @0060h:0000h,@0060h:0006h,@0060h:0027h
  31.  
  32. (Table F0001)
  33. Call Eagle MS-DOS entry point 0003h with:
  34.     nothing
  35. Return: ZF set if no key
  36.     ZF clear if keystroke available
  37.         AL = keystroke
  38. --------D-@00600006--------------------------
  39. CALL 0060h:0006h - Eagle MS-DOS v1.25 IO.SYS - WAIT FOR KEYSTROKE
  40. InstallCheck:    MS-DOS v1.25 must be installed
  41. Notes:    if an extended keystroke is available, only the low byte is returned,
  42.       and this function must be called again to get the high byte
  43.     the BIOS keycode 0000h (Ctrl-Break) is returned as 00h+FFh to avoid
  44.       the ambiguity that might be caused by returning the 00h high byte
  45. SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:0027h
  46.  
  47. (Table F0002)
  48. Call Eagle MS-DOS entry point 0006h with:
  49.     nothing
  50. Return: AL = keystroke
  51.     flags modified
  52. --------D-@00600009--------------------------
  53. CALL 0060h:0009h - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHARACTER TO SCREEN
  54. InstallCheck:    MS-DOS v1.25 must be installed
  55. Note:    this entry point supports most of the ANSI.SYS control sequences,
  56.       plus several additional escape sequences
  57. SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:000Ch
  58.  
  59. (Table F0003)
  60. Call Eagle MS-DOS entry point 0009h with:
  61.     AL = character to output
  62. Return: flags modified
  63. --------D-@0060000C--------------------------
  64. CALL 0060h:000Ch - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHARACTER TO PRINTER
  65. InstallCheck:    MS-DOS v1.25 must be installed
  66. Note:    this entry point is able, if set by configuration (see @0060h:0039h),
  67.       to strip linefeed characters following carriage returns
  68. SeeAlso: @0060h:0000h,@0060h:0009h
  69.  
  70. (Table F0004)
  71. Call Eagle MS-DOS entry point 000Ch with:
  72.     AL = character to be printed
  73. Return: flags modified
  74. --------D-@0060000F--------------------------
  75. CALL 0060h:000Fh - Eagle MS-DOS v1.25 IO.SYS - INPUT CHAR FROM AUX: DEVICE
  76. InstallCheck:    MS-DOS v1.25 must be installed
  77. Note:    if the configured AUX: device is a parallel port, this call always
  78.       returns a Ctrl-Z as the "read" character; Ctrl-Z is also returned
  79.       if the user presses Esc or Ctrl-Break while waiting for a character
  80.       to arrive on a serial port
  81. SeeAlso: @0060h:0000h
  82.  
  83. (Table F0005)
  84. Call Eagle MS-DOS entry point 000Fh with:
  85.     nothing
  86. Return: AL = received character
  87. --------D-@00600012--------------------------
  88. CALL 0060h:0012h - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHAR TO AUX: DEVICE
  89. InstallCheck:    MS-DOS v1.25 must be installed
  90. Note:    if the port is busy, this function waits until the port becomes
  91.       available or the user presses Esc or Ctrl-Break
  92. SeeAlso: @0060h:0000h
  93.  
  94. (Table F0006)
  95. Call Eagle MS-DOS entry point 0012h with:
  96.     AL = character to output
  97. Return: flags modified
  98. --------D-@00600015--------------------------
  99. CALL 0060h:0015h - Eagle MS-DOS v1.25 IO.SYS - READ ABSOLUTE SECTOR(S)
  100. InstallCheck:    MS-DOS v1.25 must be installed
  101. SeeAlso: @0060h:0000h,@0060h:0018h,@0060h:001Bh
  102.  
  103. (Table F0007)
  104. Call Eagle MS-DOS entry point 0015h with:
  105.     AL = drive table number
  106.     ES:BX -> buffer
  107.     CX = number of sectors to read
  108.     DX = logical sector number of first sector
  109.     AH = verify flag
  110. Return: CF clear if successful
  111.     CF set on error
  112.         AL = error code
  113.         0Ch drive table number out of range
  114. Note:    the drive number in AL is *not* the logical DOS drive number, but
  115.       the number of an internal data table; multiple data tables, each
  116.       describing a distinct disk format, may be shared by one logical
  117.       drive
  118. --------D-@00600018--------------------------
  119. CALL 0060h:0018h - Eagle MS-DOS v1.25 IO.SYS - WRITE ABSOLUTE SECTOR(S)
  120. InstallCheck:    MS-DOS v1.25 must be installed
  121. SeeAlso: @0060h:0000h,@0060h:0015h,@0060h:001Bh
  122.  
  123. (Table F0008)
  124. Call Eagle MS-DOS entry point 0018h with:
  125.     AL = drive table number
  126.     ES:BX -> data to be written
  127.     CX = number of sectors to write
  128.     DX = logical sector number of first sector
  129.     AH = verify flag
  130. Return: CF clear if successful
  131.     CF set on error
  132.         AL = error code
  133.         0Ch drive table number out of range
  134. Note:    the drive number in AL is *not* the logical DOS drive number, but
  135.       the number of an internal data table; multiple data tables, each
  136.       describing a distinct disk format, may be shared by one logical
  137.       drive
  138. --------D-@0060001B--------------------------
  139. CALL 0060h:001Bh - Eagle MS-DOS v1.25 IO.SYS - DETERMINE DISK FORMAT
  140. InstallCheck:    MS-DOS v1.25 must be installed
  141. SeeAlso: @0060h:0000h,@0060h:0015h,@0060h:002Ah
  142.  
  143. (Table F0009)
  144. Call Eagle MS-DOS entry point 001Bh with:
  145.     AL = DOS drive number
  146. Return: CF clear if successful
  147.         AL = drive table number
  148.         AH = ??? flag
  149.         00h ???
  150.         FFh ???
  151.     CF set on error
  152.         AL = error code
  153.         02h ???
  154.         0Ch unrecognized format
  155. --------D-@0060001E--------------------------
  156. CALL 0060h:001Eh - Eagle MS-DOS v1.25 IO.SYS - SET DAY COUNT
  157. InstallCheck:    MS-DOS v1.25 must be installed
  158. SeeAlso: @0060h:0000h,@0060h:0021h,@0060h:0024h
  159.  
  160. (Table F0010)
  161. Call Eagle MS-DOS entry point 001Eh with:
  162.     AX = day count
  163. Return: nothing
  164. --------D-@00600021--------------------------
  165. CALL 0060h:0021h - Eagle MS-DOS v1.25 IO.SYS - SET SYSTEM TIME
  166. InstallCheck:    MS-DOS v1.25 must be installed
  167. SeeAlso: @0060h:0000h,@0060h:001Eh,@0060h:0024h
  168.  
  169. (Table F0011)
  170. Call Eagle MS-DOS entry point 0021h with:
  171.     CH = hours
  172.     CL = minutes
  173.     DH = seconds
  174.     DL = hundredths
  175. Return: flags modified
  176. --------D-@00600024--------------------------
  177. CALL 0060h:0024h - Eagle MS-DOS v1.25 IO.SYS - READ SYSTEM TIME
  178. InstallCheck:    MS-DOS v1.25 must be installed
  179. SeeAlso: @0060h:0000h,@0060h:001Eh,@0060h:0021h
  180.  
  181. (Table F0012)
  182. Call Eagle MS-DOS entry point 0024h with:
  183.     nothing
  184. Return: AX = day count
  185.     CH = hours
  186.     CL = minutes
  187.     DH = seconds
  188.     DL = hundredths
  189. --------D-@00600027--------------------------
  190. CALL 0060h:0027h - Eagle MS-DOS v1.25 IO.SYS - CLEAR KEYBOARD BUFFER
  191. InstallCheck:    MS-DOS v1.25 must be installed
  192. SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:0006h
  193.  
  194. (Table F0013)
  195. Call Eagle MS-DOS entry point 0027h with:
  196.     nothing
  197. Return: ZF set
  198. --------D-@0060002A--------------------------
  199. CALL 0060h:002Ah - Eagle MS-DOS v1.25 IO.SYS - SEARCH FOR NEXT DISK FORMAT
  200. InstallCheck:    MS-DOS v1.25 must be installed
  201. SeeAlso: @0060h:0000h,@0060h:001Bh
  202.  
  203. (Table F0014)
  204. Call Eagle MS-DOS entry point 002Ah with:
  205.     AL = drive table number
  206. Return: AL = next drive table number with matching disk sector size and media
  207.           ID byte
  208. --------D-@00600039--------------------------
  209. CALL 0060h:0039h - Eagle MS-DOS v1.25 IO.SYS - CONFIGURE FROM SYSINFO.SYS
  210. InstallCheck:    MS-DOS v1.25 must be installed
  211. Note:    reads the first 144 bytes of SYSINFO.SYS from the current drive into
  212.       an internal configuration buffer
  213. SeeAlso: @0060h:0000h
  214. --------V-@C0000003--------------------------
  215. CALL C000h:0003h - VIDEO BIOS INITIALIZATION
  216. InstallCheck:    C000h:0000h must contain the word AA55h and the 
  217.           512*BYTE[C000h:0002h] bytes must sum to 00h (mod 256)
  218. Note:    is normally called only by the System ROM BIOS initialization code
  219. --------V-@C0000064--------------------------
  220. CALL C000h:0064h U - ATI Mach32 VIDEO BIOS - ???
  221. InstallCheck: ATI Mach32 video board must be installed
  222. SeeAlso: @C000h:0068h"Mach32",@C000h:006Ch,@C000h:0070h
  223.  
  224. (Table F0015)
  225. Call ATI Mach32 entry point with:
  226.     AL = function
  227.         00h ???
  228.         01h,02h ???
  229.         11h,12h ???
  230.         21h,22h ???
  231.         41h,42h ???
  232.         81h,82h ???
  233. Return: CF clear if successful
  234.     CF set on error
  235. --------V-@C0000064--------------------------
  236. CALL C000h:0064h U - ATI Mach64 VIDEO BIOS - ALTERNATE INT 10/AH=A0h (IRET)
  237. InstallCheck: ATI Mach64 video board must be installed
  238. SeeAlso: @C000h:0068h"Mach64",INT 10/AH=A0h"Mach64"
  239. --------V-@C0000068--------------------------
  240. CALL C000h:0068h U - ATI Mach32 VIDEO BIOS - ???
  241. InstallCheck: ATI Mach32 video board must be installed
  242. SeeAlso: @C000h:0064h"Mach32",@C000h:006Ch,@C000h:0070h
  243.  
  244. (Table F0016)
  245. Call ATI Mach32 entry point with:
  246.     AL = ??? (00h-02h)
  247.     ???
  248. Return: ???
  249. --------V-@C0000068--------------------------
  250. CALL C000h:0068h U - ATI Mach64 VIDEO BIOS - ALTERNATE INT 10/AH=A0h (RETF)
  251. InstallCheck: ATI Mach64 video board must be installed
  252. SeeAlso: @C000h:0064h"Mach64",INT 10/AH=A0h"Mach64"
  253. --------V-@C000006C--------------------------
  254. CALL C000h:006Ch - ATI Mach32 VIDEO BIOS - 
  255. InstallCheck: ATI Mach32 video board must be installed
  256. SeeAlso: @C000h:0064h,@C000h:0068h,@C000h:0070h
  257.  
  258. (Table F0017)
  259. Call ATI Mach32 entry point with:
  260.     AL = function
  261.         00h get ???
  262.         Return: AX = ??? (019Eh)
  263.         01h get ??? information
  264.         ES:BX -> buffer for ??? information (see #F0018)
  265.         Return: buffer filled
  266.         02h get ???
  267.         Return: AX = ??? (0250h)
  268.             BX = ??? (0A00h)
  269.             CX = ??? (0200h)
  270.             DX = ??? (0003h)
  271. Return: CF clear if successful
  272.     CF set if invalid function
  273.     all other registers preserved
  274. Note:    officially (Programmer's Reference Guide), interrupts should be
  275.       disabled (CLI) during a function 01h call
  276.  
  277. Format of ATI Mach32 ??? information:
  278. Offset    Size    Description    (Table F0018)
  279.  00h    WORD    number of bytes of data returned (0116h for tested BIOS)
  280.  02h  2 BYTEs    ??? (00h 00h and 00h 05h seen)
  281.  04h    WORD    offset of video mode records??? (0028h)
  282.  06h    BYTE    length of one video mode record??? (22h)
  283.  07h    BYTE    ???
  284.  08h    BYTE    ??? (00h/01h, reflects bit 1 of port 36EEh)
  285.  09h    BYTE    ??? (01h)
  286.  0Ah    BYTE    ???
  287.  0Bh    BYTE    memory size
  288.         00h = 256K, 01h = 512K, 02h = 1024K, 03h = 2M, 04h = 4M
  289.  0Ch    BYTE    ???
  290.  0Dh    BYTE    ???
  291.  0Eh    BYTE    ???
  292.  0Fh    BYTE    ??? (bits 6-4 of port 42E8h)
  293.  10h    BYTE    ???
  294.  11h    BYTE    ???
  295.  12h    BYTE    ???
  296.  13h    BYTE    ???
  297.  14h    WORD    ???
  298.  16h    BYTE    ???
  299.  17h    BYTE    ???
  300.  18h    BYTE    ???
  301.  19h 14 BYTEs    unused
  302.  27h    BYTE    scratch byte used by ROM code
  303.  28h 34N BYTEs    ??? video mode records (see #F0019)
  304. SeeAlso: #F0017
  305.  
  306. Format of ATI Mach32 ??? video mode record:
  307. Offset    Size    Description    (Table F0019)
  308.  00h    WORD    horizontal resolution in pixels
  309.  02h    WORD    vertical resolution in pixels
  310.  04h 30 BYTEs    ???
  311. SeeAlso: #F0018
  312. --------V-@C0000070--------------------------
  313. CALL C000h:0070h U - ATI Mach32 VIDEO BIOS - ???
  314. InstallCheck: ATI Mach32 video board must be installed
  315. SeeAlso: @C000h:0064h,@C000h:0068h,@C000h:006Ch
  316.  
  317. (Table F0020)
  318. Call ATI Mach32 entry point with:
  319.     AH = function
  320.         00h ???
  321.         01h ???
  322.         02h ???
  323.         AL = subfunction
  324.             00h ???
  325.             01h ???
  326.         03h ???
  327.         AL = ??? (00h/nonzero)
  328. Return: CF clear if successful
  329.     CF set on error
  330. --------B-@F000E739--------------------------
  331. CALL F000h:E739h - ROM BIOS INT 14 HANDLER
  332. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  333. --------B-@F000E82E--------------------------
  334. CALL F000h:E82Eh - ROM BIOS INT 16 HANDLER
  335. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  336. --------B-@F000EC59--------------------------
  337. CALL F000h:EC59h - ROM BIOS INT 13 HANDLER
  338. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  339. --------B-@F000EFD2--------------------------
  340. CALL F000h:EFD2h - ROM BIOS INT 17 HANDLER
  341. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  342. --------B-@F000F065--------------------------
  343. CALL F000h:F065h - ROM BIOS INT 10 HANDLER
  344. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  345. --------B-@F000F841--------------------------
  346. CALL F000h:F841h - ROM BIOS INT 12 HANDLER
  347. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  348. --------B-@F000F84D--------------------------
  349. CALL F000h:F84Dh - ROM BIOS INT 11 HANDLER
  350. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  351. --------B-@F000F859--------------------------
  352. CALL F000h:F859h - ROM BIOS INT 15 HANDLER
  353. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  354. --------B-@F000FE6E--------------------------
  355. CALL F000h:FE6Eh - ROM BIOS INT 1A HANDLER
  356. InstallCheck:    present if BIOS is 100% compatible with original IBM PC
  357. --------H-@F000FFF0--------------------------
  358. CALL F000h:FFF0h - COLD-BOOT ADDRESS
  359. InstallCheck:    always present
  360. SeeAlso: @FFFFh:0000h
  361. --------H-@FFFF0000--------------------------
  362. CALL FFFFh:0000h - COLD-BOOT ADDRESS
  363. InstallCheck:    always present
  364. Note:    this address is another way of expressing F000h:FFF0h
  365. SeeAlso: @F000h:FFF0h
  366. --------m-@xxxxxxxx--------------------------
  367. CALL xxxxh:xxxxh - 10NET - 10MEMMGR.SYS
  368. InstallCheck:    see INT 21/AX=4402h"10MEMMGR"
  369. SeeAlso: INT 21/AX=4402h"10MEMMGR"
  370. --------t-@xxxxxxxx--------------------------
  371. CALL xxxxh:xxxxh - Alternate Multiplex Interrupt Specification TSRs
  372. InstallCheck:    see INT 2D"AMIS"
  373. SeeAlso: INT 2D"AMIS"
  374. ----------@xxxxxxxx--------------------------
  375. CALL xxxxh:xxxxh - AutoCAD Device Interface
  376. InstallCheck:    see INT 7A/AX=0001h
  377. SeeAlso: INT 7A/AX=0001h
  378. ----------@xxxxxxxx---------------------------
  379. CALL xxxxh:xxxxh - BIOS32 Service Directory
  380. InstallCheck:    scan paragraph boundaries E000h to FFFFh for signature string
  381.     "_32_", followed by a valid header structure (see #F0021)
  382. Notes:    a 32-bit-code alternate PCI BIOS entry point may be found (if
  383.       supported) by requesting the entry point for the API with
  384.       identifier "$PCI"
  385.     an alternate entry point for INT 1A/AH=B4h may be found (if
  386.       supported) by requesting the entry point for the API with identifier
  387.       "$ACF"
  388.     other known identifiers are "$WDS" and "MPTN"
  389. SeeAlso: INT 1A/AX=B100h
  390.  
  391. Format of BIOS32 Service Directory header structure:
  392. Offset    Size    Description    (Table F0021)
  393.  00h  4 BYTEs    signature "_32_"
  394.  04h    DWORD    physical address of BSD entry point (see #F0022)
  395.  08h    BYTE    header structure version number (currently 00h)
  396.  09h    BYTE    header structure length in paragraphs (currently 01h)
  397.  0Ah    BYTE    checksum (8-bit sum of all bytes in structure, including this
  398.           one, should equal zero)
  399.  0Bh  5 BYTEs    reserved (0)
  400.  
  401. (Table F0022)
  402. Call BIOS32 Service Directory entry point with:
  403.     EBX = function
  404.         00000000h get service entry point
  405.         EAX = service identifier
  406.             46434124h ("FCA$") Plug-and-Play Auto-Configuration
  407.             49435024h ("ICP$") PCI BIOS
  408.             4E54504Dh ("NTPM") ??? MPTN [PhoenixBIOS4 Rev. 6.0]
  409.             54435724h ("SDW$") ??? WDS$ [PhoenixBIOS4 Rev. 6.0]
  410.         Return: AL = status
  411.                 00h successful
  412.                  EBX = base address of handler's code seg
  413.                  ECX = size of code segment
  414.                  EDX = offset of handler in code seg
  415.                 80h unknown service identifier
  416.         else
  417.         Return: AL = 81h invalid function
  418. Notes:    the BSD handler assumes that it is running in a 32-bit code segment
  419.     the returned entry points for PCI BIOS and Auto-Config must be called
  420.       with the same registers as the real-mode INT 1Ah interface,
  421.       including the value B1h or B4h in AH (AMI BIOS v1.00.05.AX1 returns
  422.       the same entry point for both interfaces and uses AH to distinguish
  423.       which API is desired)
  424.     some references indicate that only BL is used for the function number,
  425.       though at least one implementation actually checks the entire EBX
  426.       register; for maximum compatibility, the upper 24 bits of EBX should
  427.       be cleared when calling the entry point
  428. SeeAlso: #F0021
  429. --------E-@xxxxxxxx--------------------------
  430. CALL xxxxh:xxxxh - Borland TKERNEL
  431. InstallCheck:    see INT 2F/AX=FBA1h/BX=0082h
  432. SeeAlso: INT 2F/AX=FBA1h/BX=0082h
  433. ----------@xxxxxxxx--------------------------
  434. CALL xxxxh:xxxxh - Buffit v3.0
  435. InstallCheck:    see INT 60"Buffit"
  436. SeeAlso: INT 60"Buffit"
  437. --------m-@xxxxxxxx--------------------------
  438. CALL xxxxh:xxxxh - CEMM v5.10+ Private API
  439. InstallCheck:    see INT 21/AX=4402h/SF=00h
  440. SeeAlso: INT 21/AX=4402h/SF=00h
  441. --------m-@xxxxxxxx--------------------------
  442. CALL xxxxh:xxxxh - Cloaking - PROTECTED-MODE API
  443. InstallCheck:    see INT 2C/AX=001Dh
  444. SeeAlso: INT 2C/AX=001Dh
  445. --------m-@xxxxxxxx--------------------------
  446. CALL xxxxh:xxxxh - Cloaking - REAL-MODE API
  447. InstallCheck:    see INT 2F/AX=4310h"Cloaking"
  448. SeeAlso: INT 2F/AX=4310h"Cloaking"
  449. ----------@xxxxxxxx--------------------------
  450. CALL xxxxh:xxxxh - CTMMSYS.SYS - API
  451. Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
  452.       driver
  453. InstallCheck:    see INT 21/AX=4402h"CTMMSYS"
  454. SeeAlso: INT 21/AX=4402h"CTMMSYS"
  455. --------Q-@xxxxxxxx--------------------------
  456. CALL xxxxh:xxxxh - DESQview XDI - Driver API
  457. InstallCheck:    see INT 2F/AX=DE01h
  458. SeeAlso: INT 2F/AX=DE01h
  459. --------D-@xxxxxxxx--------------------------
  460. CALL xxxxh:xxxxh - DOS Device Drivers
  461. InstallCheck:    see INT 21/AH=52h
  462. SeeAlso: INT 21/AH=52h
  463. --------E-@xxxxxxxx--------------------------
  464. CALL xxxxh:xxxxh - DOS Protected-Mode Interface - MODE SWITCH
  465. InstallCheck:    see INT 2F/AX=1687h
  466. SeeAlso: INT 2F/AX=1687h
  467. --------E-@xxxxxxxx--------------------------
  468. CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Phar Lap RUN286
  469. InstallCheck:    see INT 2F/AX=168Ah
  470. SeeAlso: INT 2F/AX=168Ah
  471. --------E-@xxxxxxxx--------------------------
  472. CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Vendor-Specific APIs
  473. InstallCheck:    see INT 31/AX=0A00h
  474. SeeAlso: INT 31/AX=0A00h
  475. --------E-@xxxxxxxx--------------------------
  476. CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Windows Support
  477. InstallCheck:    see INT 2F/AX=168Ah
  478. SeeAlso: INT 2F/AX=168Ah
  479. --------E-@xxxxxxxx--------------------------
  480. CALL xxxxh:xxxxh - DOS Protected-Mode Services
  481. InstallCheck:    see INT 2F/AX=43E0h
  482. SeeAlso: INT 2F/AX=43E1h
  483. --------T-@xxxxxxxx--------------------------
  484. CALL xxxxh:xxxxh - DOS Task Switcher - Callout
  485. InstallCheck:    see INT 2F/AX=4B01h
  486. SeeAlso: INT 2F/AX=4B01h
  487. --------T-@xxxxxxxx--------------------------
  488. CALL xxxxh:xxxxh - DOS Task Switcher
  489. InstallCheck:    see INT 2F/AX=4B02h
  490. SeeAlso: INT 2F/AX=4B02h
  491. ----------@xxxxxxxx--------------------------
  492. CALL xxxxh:xxxxh - Enhanced Parallel Port (EPP) BIOS
  493. InstallCheck:    see INT 17/AX=0200h/BX=5050h
  494. SeeAlso: INT 17/AX=0200h/BX=5050h
  495. --------m-@xxxxxxxx--------------------------
  496. CALL xxxxh:xxxxh - Extended Memory Specification (XMS)
  497. InstallCheck:    see INT 2F/AX=4300h
  498. SeeAlso: INT 2F/AX=4310h
  499. --------c-@xxxxxxxx--------------------------
  500. CALL xxxxh:xxxxh - FASTOPEN
  501. InstallCheck:    see INT 2F/AX=122Ah
  502. SeeAlso: INT 2F/AX=122Ah
  503. --------m-@xxxxxxxx--------------------------
  504. CALL xxxxh:xxxxh - HIGHUMM.SYS
  505. InstallCheck:    see INT 21/AX=4402h"HIGHUMM"
  506. SeeAlso: INT 21/AX=4402h"HIGHUMM"
  507. ----------@xxxxxxxx--------------------------
  508. CALL xxxxh:xxxxh - HugeRealMode Driver
  509. InstallCheck:    see INT 78/AX=0000h,INT 78/AX=0001h
  510. SeeAlso: INT 78/AX=0001h
  511. --------V-@xxxxxxxx--------------------------
  512. CALL xxxxh:xxxxh - IBM 8514/A Adapter Interface (HDILOAD)
  513. InstallCheck:    see INT 7F/AX=0105h
  514. SeeAlso: INT 7F/AX=0105h
  515. ----------@xxxxxxxx--------------------------
  516. CALL xxxxh:xxxxh - IBM 8516 Touch Screen Device Driver
  517. InstallCheck:    see INT 7F/AX=ABCDh
  518. SeeAlso: INT 7F/AX=ABCDh
  519. --------u-@xxxxxxxx--------------------------
  520. CALL xxxxh:xxxxh - IBM System 36/38 Workstation Emulation
  521. InstallCheck:    see INT 0C"SYSTEM 36/38"
  522. SeeAlso: INT 0C"SYSTEM 36/38"
  523. --------D-@xxxxxxxx--------------------------
  524. CALL xxxxh:xxxxh - IFS Drivers
  525. InstallCheck:    see INT 21/AH=52h
  526. SeeAlso: INT 21/AH=52h
  527. --------W-@xxxxxxxx--------------------------
  528. CALL xxxxh:xxxxh - IFSHLP.SYS
  529. InstallCheck:    see INT 21/AH=3Fh"IFSHLP"
  530. SeeAlso: INT 21/AH=3Fh"IFSHLP"
  531. --------b-@xxxxxxxx--------------------------
  532. CALL xxxxh:xxxxh - Intel BIOS Upgrade
  533. InstallCheck:    scan paragraph boundaries from 0F0000h to 0FFFFFh for signature
  534.       string "$IBU" (see #F0023)
  535. SeeAlso: INT 15/AX=D042h/BL=00h
  536. !!! IAL\PROCESSR\PPROBIOS.PDF page 60
  537.  
  538. Format of Intel BIOS Upgrade header:
  539. Offset    Size    Description    (Table F0023)
  540.  00h  4 BYTEs    signature "$IBU"
  541.  04h    BYTE    IBU specification version (currently 01h = 1.0)
  542.  05h    BYTE    length of entire header structure in bytes (currently 17h)
  543.  06h    BYTE    checksum (forces 8-bit sum of all header bytes to 00h)
  544.  07h    DWORD    real-mode entry point address
  545.  0Bh    WORD    offset of 16-bit protected mode entry point
  546.  0Dh    DWORD    segment base address of 16-bit protected-mode entry point
  547.  11h    WORD    real-mode data segment address
  548.  13h    DWORD    segment base address of 16-bit protected-mode data segment
  549. Notes:    calls from 32-bit protected mode may be made to the 16-bit entry
  550.       point, but must ensure that any stack arguments are pushed as
  551.       16-bit values instead of 32-bit values
  552.     the entry point uses standard C calling conventions to implement
  553.       functions prototyped as
  554.         int far (*entrypoint)(int function, ...)
  555. ----------@xxxxxxxx--------------------------
  556. CALL xxxxh:xxxxh - Interrupt Sharing Protocol
  557. InstallCheck:    see INT 2D"AMIS"
  558. SeeAlso: INT 2D"AMIS"
  559. --------X-@xxxxxxxx--------------------------
  560. CALL xxxxh:xxxxh - Intel System Management Bus BIOS
  561. InstallCheck:    see INT 15/AX=53B0h/BH=01h,INT 15/AX=53B0h/BH=02h
  562. SeeAlso: INT 15/AX=53B0h/BH=01h,INT 15/AX=53B0h/BH=05h
  563. --------G-@xxxxxxxx--------------------------
  564. CALL xxxxh:xxxxh - INTRSPY v1.0 only
  565. InstallCheck:    see INT 60"INTRSPY"
  566. SeeAlso: INT 60"INTRSPY"
  567. --------m-@xxxxxxxx--------------------------
  568. CALL xxxxh:xxxxh - Memory Managers
  569. InstallCheck:    see INT 21/AX=4402h/SF=00h
  570. SeeAlso: INT 21/AX=4402h/SF=00h
  571. --------m-@xxxxxxxx--------------------------
  572. CALL xxxxh:xxxxh - Microsoft EMM386.EXE
  573. InstallCheck:    see INT 67/AX=FFA5h
  574. SeeAlso: INT 67/AX=FFA5h
  575. --------M-@xxxxxxxx--------------------------
  576. CALL xxxxh:xxxxh - Microsoft Mouse Driver - Alternate Entry Point
  577. InstallCheck:    INT 33 must be non-NULL, and must not point at an IRET
  578.       instruction; the alternate entry point is located two bytes past
  579.       the INT 33 handler
  580. Note:    this alternate entry point accepts the same arguments as the
  581.       INT 33 interface, but is invoked with a FAR CALL instead of INT 33.
  582. SeeAlso: INT 33/AX=0000h
  583. --------k-@xxxxxxxx--------------------------
  584. CALL xxxxh:xxxxh - Microsoft Real-Time Compression Interface (MRCI)
  585. InstallCheck:    see INT 1A/AX=B001h
  586. SeeAlso: INT 1A/AX=B001h
  587. --------N-@xxxxxxxx--------------------------
  588. CALL xxxxh:xxxxh - Microsoft Workgroup Connection - WORKGRP.SYS
  589. InstallCheck:    see INT 21/AH=3Fh"WORKGRP.SYS"
  590. SeeAlso: INT 21/AX=4402h"WORKGRP.SYS"
  591. --------W-@xxxxxxxx--------------------------
  592. CALL xxxxh:xxxxh - MS Windows - DOSMGR Device
  593. InstallCheck:    see INT 2F/AX=1684h/BX=0015h
  594. SeeAlso: INT 2F/AX=1684h/BX=0015h
  595. --------W-@xxxxxxxx--------------------------
  596. CALL xxxxh:xxxxh - MS Windows - EDOS Device
  597. InstallCheck:    see INT 2F/AX=1684h/BX=2925h
  598. SeeAlso: INT 2F/AX=1684h/BX=2925h
  599. --------W-@xxxxxxxx--------------------------
  600. CALL xxxxh:xxxxh - MS Windows - POSTMSG Device
  601. InstallCheck:    see INT 2F/AX=1684h/BX=8888h
  602. SeeAlso: INT 2F/AX=1684h/BX=8888h
  603. --------W-@xxxxxxxx--------------------------
  604. CALL xxxxh:xxxxh - MS Windows - REBOOT Device
  605. InstallCheck:    see INT 2F/AX=1684h/BX=0009h
  606. SeeAlso: INT 2F/AX=1684h/BX=0009h
  607. --------W-@xxxxxxxx--------------------------
  608. CALL xxxxh:xxxxh - MS Windows - SHELL Device
  609. InstallCheck:    see INT 2F/AX=1684h/BX=0017h
  610. SeeAlso: INT 2F/AX=1684h/BX=0017h
  611. --------W-@xxxxxxxx--------------------------
  612. CALL xxxxh:xxxxh - MS Windows - VADMAD Device
  613. InstallCheck:    see INT 2F/AX=1684h/BX=0444h
  614. SeeAlso: INT 2F/AX=1684h/BX=0444h
  615. --------W-@xxxxxxxx--------------------------
  616. CALL xxxxh:xxxxh - MS Windows - VbillD Device
  617. InstallCheck:    see INT 2F/AX=1684h/BX=8888h
  618. SeeAlso: INT 2F/AX=1684h/BX=8888h
  619. --------W-@xxxxxxxx--------------------------
  620. CALL xxxxh:xxxxh - MS Windows - VSWITCHD Device
  621. InstallCheck:    see INT 2F/AX=1684h/BX=0750h
  622. SeeAlso: INT 2F/AX=1684h/BX=0750h
  623. --------W-@xxxxxxxx--------------------------
  624. CALL xxxxh:xxxxh - MS Windows - VTD Device
  625. InstallCheck:    see INT 2F/AX=1684h/BX=0005h
  626. SeeAlso: INT 2F/AX=1684h/BX=0005h
  627. --------W-@xxxxxxxx--------------------------
  628. CALL xxxxh:xxxxh - MS Windows - WPS Device
  629. InstallCheck:    see INT 2F/AX=1684h/BX=310Eh
  630. SeeAlso: INT 2F/AX=1684h/BX=310Eh
  631. --------m-@xxxxxxxx--------------------------
  632. CALL xxxxh:xxxxh - Netroom RM386 v6.00
  633. InstallCheck:    see INT 2F/AX=4310h
  634. SeeAlso: INT 2F/AX=4310h
  635. --------N-@xxxxxxxx--------------------------
  636. CALL xxxxh:xxxxh - Novell - ODI Link Support Layer
  637. InstallCheck:    see INT 2F/AX=C000h"LSL.COM"
  638. SeeAlso: INT 2F/AX=C000h"LSL.COM"
  639. --------O-@xxxxxxxx--------------------------
  640. CALL xxxxh:xxxxh - Novell DOS 7 DELWATCH.EXE
  641. InstallCheck:    see INT 2F/AX=10FEh
  642. SeeAlso: INT 2F/AX=10FEh
  643. --------m-@xxxxxxxx--------------------------
  644. CALL xxxxh:xxxxh - Novell DOS 7 EMM386.EXE
  645. InstallCheck:    see INT 2F/AX=12FFh/BX=0106h
  646. SeeAlso: INT 2F/AX=12FFh/BX=0106h
  647. --------N-@xxxxxxxx--------------------------
  648. CALL xxxxh:xxxxh - Novell NetWare - Access Server Driver
  649. InstallCheck:    see INT 2F/AX=7AF1h
  650. SeeAlso: INT 2F/AX=7AF1h
  651. --------N-@xxxxxxxx--------------------------
  652. CALL xxxxh:xxxxh - Novell NetWare - DOS Requester
  653. InstallCheck:    see INT 2F/AX=7A20h/BX=0000h
  654. SeeAlso: INT 2F/AX=7A20h/BX=0000h
  655. --------N-@xxxxxxxx--------------------------
  656. CALL xxxxh:xxxxh - Novell Netware - Event Service Layer
  657. InstallCheck:    see INT 2F/AX=C000h"NESL"
  658. SeeAlso: INT 2F/AX=C000h"NESL"
  659. --------N-@xxxxxxxx--------------------------
  660. CALL xxxxh:xxxxh - Novell NetWare - IPX
  661. InstallCheck:    see INT 2F/AX=7A00h
  662. SeeAlso: INT 2F/AX=7A00h
  663. --------N-@xxxxxxxx--------------------------
  664. CALL xxxxh:xxxxh - Novell NetWare - IPXODI
  665. InstallCheck:    see INT 2F/AX=7A2Fh
  666. SeeAlso: INT 2F/AX=7A2Fh
  667. --------N-@xxxxxxxx--------------------------
  668. CALL xxxxh:xxxxh - Novell NetWare - TCP/IP Protocol Stack
  669. InstallCheck:    see INT 2F/AX=7A40h
  670. SeeAlso: INT 2F/AX=7A40h
  671. --------N-@xxxxxxxx--------------------------
  672. CALL xxxxh:xxxxh - Novell NetWare - VLM
  673. InstallCheck:    see INT 2F/AX=7A20h/BX=0000h
  674. SeeAlso: INT 2F/AX=7A20h/BX=0000h
  675. --------N-@xxxxxxxx--------------------------
  676. CALL xxxxh:xxxxh - Novell NetWare - VLM CallA
  677. InstallCheck:    see INT 2F/AX=7A20h/BX=0001h
  678. SeeAlso: INT 2F/AX=7A20h/BX=0001h
  679. --------N-@xxxxxxxx--------------------------
  680. CALL xxxxh:xxxxh - Novell NetWare - VLM Multicast
  681. InstallCheck:    see INT 2F/AX=7A20h/BX=0004h
  682. SeeAlso: INT 2F/AX=7A20h/BX=0004h
  683. --------N-@xxxxxxxx--------------------------
  684. CALL xxxxh:xxxxh - Novell NetWare - VLM Multiplex
  685. InstallCheck:    see INT 2F/AX=7A20h/BX=0002h
  686. SeeAlso: INT 2F/AX=7A20h/BX=0002h
  687. --------N-@xxxxxxxx--------------------------
  688. CALL xxxxh:xxxxh - Novell NetWare - VLM Parse API
  689. InstallCheck:    see INT 2F/AX=7A20h/BX=0003h
  690. SeeAlso: INT 2F/AX=7A20h/BX=0003h
  691. --------N-@xxxxxxxx--------------------------
  692. CALL xxxxh:xxxxh - Novell NetWare Lite - CLIENT
  693. InstallCheck:    see INT 2F/AX=D800h
  694. SeeAlso: INT 2F/AX=D800h
  695. --------N-@xxxxxxxx--------------------------
  696. CALL xxxxh:xxxxh - Novell NetWare Lite - NLCACHE/NWCACHE
  697. InstallCheck:    see INT 2F/AX=D8C0h
  698. SeeAlso: INT 2F/AX=D8C0h
  699. --------N-@xxxxxxxx--------------------------
  700. CALL xxxxh:xxxxh - Novell NetWare Lite - SERVER
  701. InstallCheck:    see INT 2F/AX=D880h
  702. SeeAlso: INT 2F/AX=D880h
  703. --------R-@xxxxxxxx--------------------------
  704. CALL xxxxh:xxxxh - pcANYWHERE IV/LAN
  705. InstallCheck:    see INT 21/AX=2B44h/BX=4D41h
  706. SeeAlso: INT 21/AX=2B44h/BX=4D41h
  707. --------X-@xxxxxxxx--------------------------
  708. CALL xxxxh:xxxxh - PCI BIOS v2.0c Protected-Mode API
  709. InstallCheck:    see INT 1A/AX=B101h
  710. SeeAlso: INT 1A/AX=B101h
  711. ----------@xxxxxxxx--------------------------
  712. CALL xxxxh:xxxxh - PenDOS PENDEV.SYS
  713. InstallCheck:    see INT 21/AX=4402h"PENDEV"
  714. SeeAlso: INT 21/AX=4402h"PENDEV"
  715. --------E-@xxxxxxxx--------------------------
  716. CALL xxxxh:xxxxh - Phar Lap 386/DOS-Extender v4.1
  717. InstallCheck:    see INT 2F/AX=ED03h
  718. SeeAlso: INT 2F/AX=ED03h
  719. --------X-@xxxxxxxx--------------------------
  720. CALL xxxxh:xxxxh - Plug-and-Play BIOS v1.0A
  721. InstallCheck:    scan paragraph boundaries F000h to FFFFh for signature string
  722.       "$PnP" followed by a valid Plug-and-Play header structure
  723.       (see #F0024)
  724. SeeAlso: @xxxxh:xxxxh"BIOS32 Service Directory",INT 1A/AH=B4h
  725.  
  726. Format of Plug-and-Play Installation Structure:
  727. Offset    Size    Description    (Table F0024)
  728.  00h  4 BYTEs    signature "$PnP"
  729.  04h    BYTE    Plug-and-Play version (major in high nybble, BCD minor in low)
  730.         10h for current specification
  731.  05h    BYTE    length of Installation Structure in bytes
  732.  06h    WORD    control field
  733.         bits 15-2 reserved
  734.         bits 1-0: event notification mechanism
  735.              00 not supported
  736.              01 polling
  737.              10 asynchronous (interrupt time)
  738.  08h    BYTE    checksum (8-bit sum of all bytes in structure, including this
  739.           one, should equal zero)
  740.  09h    DWORD    physical address of event notification flag if using polling
  741.         (bit 0 set when a system even occurs)
  742.  0Dh    WORD    real mode entry offset (see #F0025)
  743.  0Fh    WORD    real mode code segment
  744.  11h    WORD    16-bit protected mode entry point offset (see #F0025)
  745.  13h    DWORD    16-bit protected mode code segment base address
  746.  17h    DWORD    OEM device identifier
  747.  1Bh    WORD    real mode data segment
  748.  1Dh    DWORD    16-bit protected mode data segment base address
  749.  
  750. (Table F0025)
  751. Call Plug-and-Play BIOS entry point with:
  752.     STACK:    WORD    function number
  753.             0000h Get Number of System Device Nodes (see #F0026)
  754.             0001h Get System Device Node (see #F0027)
  755.             0002h Set System Device Node (see #F0028)
  756.             0003h Get Event (see #F0029)
  757.             0004h Send Message (see #F0031)
  758.             0005h Get Docking Station Information (see #F0033)
  759.             0006h reserved for future versions
  760.             0007h Select Primary Boot Devices (see #F0034)
  761.             0008h Get Primary Boot Devices (see #F0035)
  762.             0009h Set Statically Allocated Resource Information
  763.                   (see #F0037)
  764.             000Ah Get Statically Allocated Resource Information
  765.                   (see #F0038)
  766.             000Bh Get APM ID Table (see #F0039)
  767.             0040h Get Plug-and-Play ISA Configuration Structure
  768.                   (see #F0041)
  769.             0041h Get Extended System Configuration Data Info
  770.                   (see #F0043)
  771.             0042h Read Extended SYstem Configuration Data
  772.                   (see #F0044)
  773.             0043h Write Extended SYstem Configuration Data
  774.                   (see #F0045)
  775.             ---Desktop Management Interface v2.0+---
  776.             0050h Get DMI Information (see #F0046)
  777.             0051h Get DMI structure (see #F0047)
  778.             ---SMBIOS v2.1+ (formerly Desktop Management I'face---
  779.             0052h Set DMI structure (see #F0048)
  780.             0053h Get DMI structure-change information (see #F0051)
  781.             0054h SMBIOS control (see #F0053)
  782.             0055h Get GP Non-Volatile Storage info (see #F0056)
  783.             0056h Read GP Non-Volatile Storage data (see #F0057)
  784.             0057h Write GP Non-Volatile Storage data (see #F0058)
  785.             0058h-005Fh reserved for future use
  786.             ---BIOS Boot Specification---
  787.             0060h Get Version and Installation Check (see #F0074)
  788.             0061h Get IPL Device Count (see #F0075)
  789.             0062h Get Boot Priority and IPL Table (see #F0076)
  790.             0063h Set Boot Priority (see #F0077)
  791.             0064h Get IPL Device from Last Boot (see #F0078)
  792.             0065h Get Boot First (see #F0079)
  793.             0066h Set Boot First (see #F0080)
  794.             0067h-006Fh reserved
  795.         var    function arguments
  796.         WORD    PnP BIOS writable segment/selector
  797. Return: AX = status (see #F0081)
  798. Notes:    the caller must provide at least 1024 bytes of stack space for use by
  799.       the Plug-and-Play BIOS
  800.     this API is bi-modal; all calls are available in both real mode and
  801.       16-bit protected mode (if calling from 32-bit protected mode, care
  802.       must be taken to ensure proper alignment of the stack arguments)
  803. SeeAlso: #F0024
  804.  
  805. (Table F0026)
  806. Call Plug-and-Play BIOS function 00h with:
  807.     STACK:    WORD    0000h (function "Get Number of System Device Nodes")
  808.         DWORD    -> BYTE in which to return number of device nodes
  809.         DWORD    -> WORD in which to return size of largest device node
  810.         WORD    PnP BIOS writable segment/selector
  811. Return: AX = status (see #F0081)
  812. Note:    the large-model C declaration is
  813.       int (*entry)(int, unsigned char *, unsigned int *, unsigned int);
  814.  
  815. (Table F0027)
  816. Call Plug-and-Play BIOS function 01h with:
  817.     STACK:    WORD    0001h (function "Get System Device Node")
  818.         DWORD    -> BYTE containing node number or handle
  819.         DWORD    -> buffer for device node
  820.         WORD    control flag
  821.             bits 15-2 reserved (0)
  822.             bit 1: get static config (values for next boot)
  823.             bit 0: get current (dynamic) configuration
  824.         WORD    PnP BIOS writable segment/selector
  825. Return: AX = status (see #F0081)
  826. Notes:    the large-model C declaration is
  827.       int (*entry)(int, unsigned char *, DEV_NODE *, unsigned int,
  828.         unsigned int);
  829.     exactly one of the two defined bits in the control flag must be set
  830.  
  831. (Table F0028)
  832. Call Plug-and-Play BIOS function 02h with:
  833.     STACK:    WORD    0002h (function "Set System Device Node")
  834.         DWORD    -> BYTE containing node number or handle
  835.         DWORD    -> buffer containing device node
  836.         WORD    control flag
  837.             bits 15-2 reserved (0)
  838.             bit 1: set static config (values for next boot)
  839.             bit 0: set current (dynamic) configuration
  840.         WORD    PnP BIOS writable segment/selector
  841. Return: AX = status (see #F0081)
  842. Notes:    the large-model C declaration is
  843.       int (*entry)(int, unsigned char *, DEV_NODE *, unsigned int,
  844.         unsigned int);
  845.     exactly one of the two defined bits in the control flag must be set
  846.  
  847. (Table F0029)
  848. Call Plug-and-Play BIOS function 03h with:
  849.     STACK:    WORD    0003h (function "Get Event")
  850.         DWORD    -> WORD buffer for event message identifier (see #F0030)
  851.         WORD    PnP BIOS writable segment/selector
  852. Return: AX = status (see #F0081)
  853. Note:    the large-model C declaration is
  854.       int (*entry)(int, unsigned int *, unsigned int);
  855.  
  856. (Table F0030)
  857. Values for PnP Event Identifier:
  858.  0001h    "ABOUT_TO_CHANGE_CONFIG" preliminary notification of changes, including
  859.       docking and undocking
  860.  0002h    "DOCK_CHANGED" devices have been added to or removed from system
  861.  0003h    "SYSTEM_DEVICE_CHANGED" removable system devices have been inserted
  862.       or removed
  863.  0004h    "CONFIG_CHANGE_FAILED" error detected while atempting to add or remove
  864.       devices
  865.  8000h-FFFEh OEM-defined events
  866.  FFFFh    "UNKNOWN_SYSTEM_EVENT"
  867.  
  868. (Table F0031)
  869. Call Plug-and-Play BIOS function 04h with:
  870.     STACK:    WORD    0004h (function "Send Message")
  871.         WORD    message identifier (see #F0032)
  872.         WORD    PnP BIOS writable segment/selector
  873. Return: AX = status (see #F0081)
  874. Note:    the large-model C declaration is
  875.       int (*entry)(int, unsigned int, unsigned int);
  876. SeeAlso: #F0031,#F0033
  877.  
  878. (Table F0032)
  879. Values for PnP Message Identifier:
  880.  0000h    "OK"
  881.  0001h    "ABORT" action which caused an ABOUT_TO_X message
  882.  0002h-003Fh reserved for future Response Messages
  883.  0040h    "UNDOCK_DEFAULT_ACTION"
  884.  0041h    "POWER_OFF"
  885.  0042h    "PNP_OS_ACTIVE"
  886.  0043h    "PNP_OS_INACTIVE"
  887.  0044h-007Fh reserved for future Control Messages
  888.  8000h-FFFFh OEM-defined messages
  889.  
  890. (Table F0033)
  891. Call Plug-and-Play BIOS function 05h with:
  892.     STACK:    WORD    0005h (function "Get Docking Station Information")
  893.         DWORD    -> buffer for docking station info (see #F0036)
  894.         WORD    PnP BIOS writable segment/selector
  895. Return: AX = status (see #F0081)
  896. Note:    the large-model C declaration is
  897.       int (*entry)(int, unsigned char *, unsigned int);
  898. SeeAlso: #F0031,#F0034
  899.  
  900. (Table F0034)
  901. Call Plug-and-Play BIOS function 07h with:
  902.     STACK:    WORD    0007h (function "Select Primary Boot Devices")
  903.         WORD    type of primary boot device
  904.             0000h primary input
  905.             0001h primary output
  906.             0002h primary IPL
  907.         DWORD    Plug-and-Play 32-bit device ID or FFFFFFFFh for ISA
  908.         DWORD    device serial number or FFFFFFFFh
  909.         DWORD    32-bit logical device ID or FFFFFFFFh for ISA device
  910.         WORD    physical unit number
  911.         WORD    control flag
  912.             bits 15-1 reserved (0)
  913.             bit 0: do not check for attached device during PnP POST
  914.                   boot device selection
  915.         DWORD    -> preferred resource allocation or -> END_TAG if none
  916.         WORD    PnP BIOS writable segment/selector
  917. Return: AX = status (see #F0081)
  918. Note:    the large-model C declaration is
  919.       int (*entry)(int, int, unsigned long, unsigned long, unsigned long,
  920.         int, int, char *, unsigned int);
  921.  
  922. (Table F0035)
  923. Call Plug-and-Play BIOS function 08h with:
  924.     STACK:    WORD    0008h (function "Get Primary Boot Devices")
  925.         WORD    type of primary boot device
  926.             0000h primary input
  927.             0001h primary output
  928.             0002h primary IPL
  929.         DWORD    -> DWORD buffer for Plug-and-Play 32-bit device ID
  930.         DWORD    -> DWORD buffer for device serial number
  931.         DWORD    -> DWORD buffer for logical device ID
  932.         DWORD    -> WORD buffer for physical unit number
  933.         DWORD    -> buffer for preferred resource allocation
  934.         WORD    PnP BIOS writable segment/selector
  935. Return: AX = status (see #F0081)
  936. Note:    the large-model C declaration is
  937.       int (*entry)(int, int, unsigned long *, unsigned long *,
  938.         unsigned long *, unsigned int *, char *, unsigned int);
  939.  
  940. Format of Plug-and-Play Docking Station Information:
  941. Offset    Size    Description    (Table F0036)
  942.  00h    DWORD    docking station location identifier (EISA device ID format)
  943.         FFFFFFFFh if unknown or no product identifier
  944.  04h    DWORD    serial number or 00000000h
  945.  08h    WORD    capabilities
  946.         bits 15-3 reserved (0)
  947.         bits 2-1: hot-pluggability
  948.             00 power-down required to dock/undock
  949.             01 must be in suspend mode ("warm" dock/undock)
  950.             10 system can be hot-docked
  951.             11 reserved
  952.         bit 0: docking station provides support for controlling
  953.               sequence of docking/undocking
  954.  
  955. (Table F0037)
  956. Call Plug-and-Play BIOS function 09h with:
  957.     STACK:    WORD    0009h (function "Set Statically Allocated Resource
  958.               Information")
  959.         DWORD    -> block of statically-allocated resources as described
  960.               in the Plug-and-Play ISA Spec
  961.         WORD    PnP BIOS writable segment/selector
  962. Return: AX = status (see #F0081)
  963. Notes:    the large-model C declaration is
  964.       int (*entry)(int, unsigned char *, unsigned int);
  965.     if the returned status is 008Dh, the Plug-and-Play BIOS supports
  966.       ESCD, and the caller should thus use functions 41h to 43h instead
  967.       of 09h and 0Ah
  968.  
  969. (Table F0038)
  970. Call Plug-and-Play BIOS function 0Ah with:
  971.     STACK:    WORD    000Ah (function "Get Statically Allocated Resource
  972.               Information")
  973.         DWORD    -> buffer for statically-allocated resources as
  974.               described in the Plug-and-Play ISA Spec
  975.         WORD    PnP BIOS writable segment/selector
  976. Return: AX = status (see #F0081)
  977. Notes:    the large-model C declaration is
  978.       int (*entry)(int, unsigned char *, unsigned int);
  979.     if the returned status is 008Dh, the Plug-and-Play BIOS supports
  980.       ESCD, and the caller should thus use functions 41h to 43h instead
  981.       of 09h and 0Ah
  982.  
  983. (Table F0039)
  984. Call Plug-and-Play BIOS function 0Bh with:
  985.     STACK:    WORD    000Bh (function "Get APM ID Table")
  986.               Information")
  987.         DWORD    -> WORD buffer for size of data buffer
  988.         DWORD    -> buffer for storing APM ID table (see #F0040)
  989.         WORD    PnP BIOS writable segment/selector
  990. Return: AX = status (see #F0081)
  991. Desc:    copies the Advanced Power Management v1.1 device identifier table to
  992.       Plug-and-Play device identifier mappings
  993. Note:    the large-model C declaration is
  994.       int (*entry)(int, unsigned int *, unsigned char *, unsigned int);
  995. SeeAlso: INT 15/AX=5300h
  996.  
  997. Format of Plug-and-Play APM ID Table:
  998. Offset    Size    Description    (Table F0040)
  999.  00h    DWORD    Plug-and-Play device identifier
  1000.  04h    WORD    APM v1.1+ identifier
  1001. SeeAlso: #F0039
  1002.  
  1003. (Table F0041)
  1004. Call Plug-and-Play BIOS function 40h with:
  1005.     STACK:    WORD    0040h (function "Get Plug-and-Play ISA Configuration
  1006.               Structure")
  1007.         DWORD    -> buffer for configuration structure (see #F0042)
  1008.         WORD    PnP BIOS writable segment/selector
  1009. Return: AX = status (see #F0081)
  1010. Note:    the large-model C declaration is
  1011.       int (*entry)(int, unsigned char *, unsigned int);
  1012.  
  1013. Format of Plug-and-Play ISA Configuration Structure:
  1014. Offset    Size    Description    (Table F0042)
  1015.  00h    BYTE    structure revision level (01h)
  1016.  01h    BYTE    total Card Select Numbers (CSNs) assigned
  1017.  02h    WORD    ISA Read Data Port (see also PORT 0A79h)
  1018.  04h    WORD    reserved (0)
  1019. SeeAlso: #F0041
  1020.  
  1021. (Table F0043)
  1022. Call Plug-and-Play BIOS function 41h with:
  1023.     STACK:    WORD    0041h (function "Get Extended System Configuration
  1024.               Information")
  1025.         DWORD    -> WORD buffer for size of nonvolatile storage
  1026.         DWORD    -> WORD buffer for size of ESCD allocated
  1027.         DWORD    -> DWORD buffer for physical base address of NV storage
  1028.               (if memory-mapped, else 00000000h)
  1029.         WORD    PnP BIOS writable segment/selector
  1030. Return: AX = status (see #F0081)
  1031. Note:    the large-model C declaration is
  1032.       int (*entry)(int, unsigned int *, unsigned int *, unsigned long *,
  1033.           unsigned int);
  1034. SeeAlso: INT 1A/AX=B401h
  1035.  
  1036. (Table F0044)
  1037. Call Plug-and-Play BIOS function 42h with:
  1038.     STACK:    WORD    0042h (function "Read Extended System Configuration
  1039.               Data")
  1040.         DWORD    -> buffer for storing ESCD
  1041.         WORD    read/writable selector for ESCD if memory-mapped and
  1042.               called in protected mode (ignored otherwise)
  1043.         WORD    PnP BIOS writable segment/selector
  1044. Return: AX = status (see #F0081)
  1045. Notes:    the large-model C declaration is
  1046.       int (*entry)(int, unsigned char *, unsigned int, unsigned int);
  1047.     if an ESCD selector is required, the caller must construct a 16-bit
  1048.       data segment selector with a limit of 64K
  1049.  
  1050. (Table F0045)
  1051. Call Plug-and-Play BIOS function 43h with:
  1052.     STACK:    WORD    0043h (function "Write Extended System Configuration
  1053.               Data")
  1054.         DWORD    -> buffer containing ESCD
  1055.         WORD    read/writable selector for ESCD if memory-mapped and
  1056.               called in protected mode (ignored otherwise)
  1057.         WORD    PnP BIOS writable segment/selector
  1058. Return: AX = status (see #F0081)
  1059. Notes:    the large-model C declaration is
  1060.       int (*entry)(int, unsigned char *, unsigned int, unsigned int);
  1061.     if an ESCD selector is required, the caller must construct a 16-bit
  1062.       data segment selector with a limit of 64K
  1063.  
  1064. (Table F0046)
  1065. Call Desktop Management Specification function 50h with:
  1066.     STACK:    WORD    0050h (function "Get DMI Information")
  1067.         DWORD    -> buffer for ASCIZ DMI BIOS revision string
  1068.         DWORD    -> WORD to receive number of DMI structures
  1069.         DWORD    -> WORD to receive size of largest DMI structure
  1070.         DWORD    -> DWORD to receive DMI storage base address
  1071.         DWORD    -> WORD to receive DMI storage size
  1072.         WORD    BIOS selector
  1073. Return: AX = status (see #F0081)
  1074. Notes:    the large-model C declaration is
  1075.       short (*entry)(int, unsigned char *, unsigned short *,
  1076.             unsigned short *, unsigned long *, unsigned short *,
  1077.             unsigned short) ;
  1078.     the BIOS may return a structure size larger than the actual largest
  1079.       DMI structure to permit dynamic information
  1080.     this function is available in both real mode and 16-bit protected mode
  1081. SeeAlso: #F0047
  1082.  
  1083. (Table F0047)
  1084. Call Desktop Management Specification function 51h with:
  1085.     STACK:    WORD    0051h (function "Get DMI Structure")
  1086.         DWORD    -> WORD number/handle of structure to retrieve
  1087.         DWORD    -> buffer for DMI structure
  1088.         WORD    DMI read/write data selector
  1089.         WORD    PnP BIOS read/write selector
  1090. Return: AX = status (see #F0081) 
  1091. Notes:    the large-model c declaration is
  1092.       short (*entry)(int, unsigned short *,unsigned char *, unsigned short,
  1093.             unsigned short) ;
  1094.     structure number 0000h will return the first SMBIOS structure; the
  1095.       variable is updated with the number of the next structure after each
  1096.       successful call, returning FFFFh if the last structure has been
  1097.       returned
  1098.     this function is available in both real mode and 16-bit protected mode
  1099. SeeAlso: #F0046,#F0048
  1100.  
  1101. (Table F0048)
  1102. Call System Management BIOS function 52h with:
  1103.     STACK:    WORD    0052h (function "Set DMI Structure")
  1104.         DWORD    -> buffer containing new data (see #F0049)
  1105.         DWORD    -> BIOS work buffer
  1106.         BYTE    control flags
  1107.             bit 0: set structure instead of just validating
  1108.             bits 7-1: reserved (0)
  1109.         BYTE    padding
  1110.         WORD    DMI read/write data selector
  1111.         WORD    PnP BIOS read/write selector
  1112. Return:    AX = status (see #F0081)
  1113. SeeAlso: #F0025,#F0047,#F0051
  1114.  
  1115. Format of DMI data buffer for SMBIOS function 52h:
  1116. Offset    Size    Description    (Table F0049)
  1117.  00h    BYTE    operation to perform (see #F0050)
  1118.  01h    BYTE    offset within fixed data of the structure for the to-be-
  1119.           changed item
  1120.  02h    DWORD    change mask for BYTE/WORD/DWORD change operation
  1121.         this value is ANDed with the existing data prior to
  1122.           applying the change value given below
  1123.  06h    DWORD    change value for BYTE/WORD/DWORD change operation
  1124.         this value is ORed with the result of applying the
  1125.           change mask above to the existing data
  1126.  0Ah    WORD    data length for structure-add, string-change, block-change
  1127.         for a string-change command, this field specifies the
  1128.           length of the string including the NUL terminator; if
  1129.           the length is 1 (empty string), the string is removed
  1130.           if the applicable access rights are met
  1131.  0Ch  4 BYTEs    structure header of structure to be changed/added/removed
  1132.         (see also #F0059)
  1133.  10h    var    new structure data for structure-add or block-change cmd
  1134.         new string data for string-change command
  1135. SeeAlso: #F0048,#F0059
  1136.  
  1137. (Table F0050)
  1138. Values for SMBIOS structure-change operation:
  1139.  00h    change a single byte in the identified structure
  1140.  01h    change a word (two bytes) in the identified structure
  1141.  02h    change a DWORD (four byets) in the identified structure
  1142.  03h    add the identified structure to the SMBIOS structure pool
  1143.  04h    remove the identified structure from the SMBIOS structure pool
  1144.  05h    change a string in the identified structure
  1145.  06h    change a block of data in the identified structure
  1146.  07h-FFh reserved for future revisions of specification
  1147. SeeAlso: #F0049
  1148.  
  1149. (Table F0051)
  1150. Call System Management BIOS function 53h with:
  1151.     STACK:    WORD    0053h (function "Get Structure Change Information")
  1152.         DWORD    -> SMBIOS change structure (see #F0052)
  1153.         WORD    DMI read/write data selector
  1154.         WORD    PnP BIOS read/write selector
  1155. Return: AX = status (see #F0081)
  1156. SeeAlso: #F0025,#F0048,#F0053
  1157.  
  1158. Format of SMBIOS change structure:
  1159. Offset    Size    Description    (Table F0052)
  1160.  00h    BYTE    change status
  1161.         00h no change
  1162.         01h other
  1163.         02h unknown
  1164.         03h single SMBIOS structure affected
  1165.         04h multiple SMBIOS structures affected
  1166.         other reserved
  1167.  01h    BYTE    change type
  1168.         bits 7-2 reserved (0)
  1169.         bit 1: structure(s) added
  1170.         bit 0: structure(s) changed
  1171.  02h    WORD    structure handle (if change status == 03h)
  1172.  04h 12 BYTEs    reserved (0)
  1173. Note:    if multiple structures changed, all of the SMBIOS structures must be
  1174.       enumerated to determine what changed
  1175. SeeAlso: #F0051
  1176.  
  1177. (Table F0053)
  1178. Call System Management BIOS function 54h with:
  1179.     STACK:    WORD    0054h (function "SMBIOS Control")
  1180.         WORD    subfunction (see #F0054)
  1181.         DWORD    -> data
  1182.         BYTE    control flags
  1183.             bits 7-1: reserved (0)
  1184.             bit 0: perform the operation instead of just validating
  1185.                   parameters
  1186.         BYTE    padding
  1187.         WORD    DMI read/write data selector
  1188.         WORD    PnP BIOS read/write selector
  1189. Return: AX = status (see #F0081)
  1190. SeeAlso: #F0025,#F0051,#F0056
  1191.  
  1192. (Table F0054)
  1193. Values for SMBIOS function 54h subfunction:
  1194.  0000h    clear event log
  1195.     data parameter must be 00000000h
  1196.  0001h    control event logging
  1197.     data parameter points at 2-WORD buffer containing AND-mask and
  1198.       OR-mask for modifying logging values; on return, the second word will
  1199.       contain the prior value of the control flags (see #F0055)
  1200.  0002h    (v2.1+) clear event log (Type 15)
  1201.     data parameter is 32-bit physical address of a scratch buffer for use
  1202.       by the BIOS, which must be writeable and at least as large as the
  1203.       largest-structure size reported by function 50h
  1204.  0003h-3FFFh reserved for future revisions of specification
  1205.  4000h-7FFFh reserved for BIOS vendor
  1206.  8000h-FFFFh reserved for system vendor
  1207. SeeAlso: #F0053
  1208.  
  1209. Bitfields for SMBIOS event logging control word:
  1210. Bit(s)    Description    (Table F0055)
  1211.  15-3    reserved for future use (0)
  1212.  2    disable logging of POST errors
  1213.  1    enable logging of correctable memory errors
  1214.  0    enable overall event logging
  1215. SeeAlso: #F0054
  1216.  
  1217. (Table F0056)
  1218. Call System Management BIOS function 55h with:
  1219.     STACK:    WORD    0055h (function "Get General-Purpose NonVolatile Info")
  1220.         DWORD    -> WORD GPNV handle (set to 0000h for first call)
  1221.         DWORD    -> WORD (ret) minimum buffer size (in bytes)
  1222.         DWORD    -> WORD (ret) size allocated for this GPNV
  1223.         DWORD    -> DWORD (ret) physical base address for memory-mapped
  1224.                   non-volatile storage (00000000h if PMode
  1225.                   mapping not required)
  1226.         WORD    PnP BIOS read/write selector
  1227. Return: AX = status (see #F0081)
  1228.     GPNV handle var set to handle of next GPNV area or FFFFh if no more
  1229. SeeAlso: #F0025,#F0053,#F0057
  1230.  
  1231. (Table F0057)
  1232. Call System Management BIOS function 56h with:
  1233.     STACK:    WORD    0056h (func "Read General-Purpose NonVolatile Data")
  1234.         WORD    GPNV handle for area to be read
  1235.         DWORD    -> buffer for GPNV data (must be large enough to hold
  1236.               entire area - use "min buffer size" from func 55h)
  1237.         DWORD    -> WORD lock value or FFFFh to ignore
  1238.         WORD    GPNV storage selector
  1239.         WORD    PnP BIOS read/write selector
  1240. Return: AX = status (see #F0081)
  1241.     lock value set to value of the current lock if it was not FFFFh on
  1242.       entry and locking is supported
  1243. SeeAlso: #F0025,#F0056,#F0058
  1244.  
  1245. (Table F0058)
  1246. Call System Management BIOS function 57h with:
  1247.     STACK:    WORD    0057h (func "Write General-Purpose NonVolatile Data")
  1248.         WORD    GPNV handle for area to be written
  1249.         DWORD    -> buffer containing GPNV data
  1250.         WORD    lock value (must match value set by prior read) or
  1251.               FFFFh for a forced write
  1252.         WORD    GPNV storage selector
  1253.         WORD    PnP BIOS read/write selector
  1254. Return: AX = status (see #F0081)
  1255. SeeAlso: #F0025,#F0057
  1256.  
  1257. Format of SMBIOS data structure:
  1258. Offset    Size    Description    (Table F0059)
  1259.  00h  4 BYTEs    structure header
  1260.         BYTE structure type (see #F0060)
  1261.             80h-FFh available for system/OEM-specific data
  1262.         BYTE length of formatted data, including header
  1263.         WORD structure handle (a unique value 0000h-FEFFh [v2.0 allows
  1264.               up to FFFEh])
  1265.             handles FF00h-FFFFh are reserved for use by the SMBIOS
  1266.               specification
  1267.             handles need not be contiguous -- a handle might not
  1268.               exist any more after a configuration change, but the
  1269.               BIOS may not re-assign that handle number to another
  1270.               structure
  1271. ---type 00h---
  1272.  04h    BYTE    string number of the vendor name (string numbers are 1-based)
  1273.  05h    BYTE    string number of the version string (00h if not present)
  1274.  06h    WORD    starting segment of runtime BIOS
  1275.  08h    BYTE    string number of BIOS release date
  1276.  09h    BYTE    size of BIOS ROM (stored as one less than number of 64K units)
  1277.  0Ah    QWORD    BIOS characteristics (see #F0061)
  1278.  12h    var    optional space for BIOS characteristics extension
  1279.           (see #F0062,#F0063)
  1280.         (size of optional space is implied by header's length field)
  1281.  var    var    free-form ASCIZ strings (max 64 bytes per string)
  1282. ---type 01h---
  1283.  04h    BYTE    string number of manufacturer name
  1284.  05h    BYTE    string number of product name
  1285.  06h    BYTE    string number of version number
  1286.  07h    BYTE    string number of serial number
  1287.  08h 16 BYTEs    (v2.1+) universal unique ID number (UUID)
  1288.         all-FFh if not currently set
  1289.         all-00h if not present
  1290.  18h    BYTE    (v2.1+) type of last wake-up event (see #F0064)
  1291. ---type 02h---
  1292.  04h    BYTE    string number of manufacturer name
  1293.  05h    BYTE    string number of product name
  1294.  06h    BYTE    string number of version number
  1295.  07h    BYTE    string number of serial number
  1296. ---type 03h---
  1297.  04h    BYTE    string number of manufacturer name
  1298.  05h    BYTE    chassis type
  1299.         bit 7: chassis lock present
  1300.         bits 6-0: (see #F0065)
  1301.  06h    BYTE    string number of version number
  1302.  07h    BYTE    string number of serial number
  1303.  08h    BYTE    string number of asset tag number
  1304.  09h    BYTE    (v2.1+) enclosure state at last boot (see #F0066)
  1305.  0Ah    BYTE    (v2.1+) power supply state at last boot
  1306.  0Bh    BYTE    (v2.1+) thermal state at last boot
  1307.  0Ch    BYTE    (v2.1+) physical security status at last boot (see #F0067)
  1308.  0Dh    DWORD    (v2.3+) OEM/BIOS-specific information
  1309. ---type 04h---
  1310.  04h    BYTE    string number of socket designation
  1311.  05h    BYTE    processor type (see #F0068)
  1312.  06h    BYTE    processor family (see #F0069)
  1313.  07h    BYTE    string number of processor manufacturer
  1314.  08h    QWORD    processor identification data (see #F0070)
  1315.  10h    BYTE    string number of processor version string
  1316.  11h    BYTE    voltage (see #F0071)
  1317.  12h    WORD    external clock frequency in MHz (0000h if unknown)
  1318.  14h    WORD    maximum internal processor speed in MHz (0000h if unknown)
  1319.  16h    WORD    current internal processor speed in MHz (0000h if unknown)
  1320.  18h    BYTE    processor status (see #F0072)
  1321.  19h    BYTE    processor upgrade (see #F0073)
  1322.  1Ah    WORD    (v2.1+) handle of L1 cache information structure, or FFFFh
  1323.  1Ch    WORD    (v2.1+) handle of L2 cache information structure, or FFFFh
  1324.  1Eh    WORD    (v2.1+) handle of L3 cache information structure, or FFFFh
  1325. ---type 05h---
  1326.  04h    BYTE    error-detection method
  1327.  05h    BYTE    error-correction capability
  1328.  06h    BYTE    supported memory interleave
  1329.  07h    BYTE    current memory interleave
  1330.  08h    BYTE    maximum memory module size (00h=1M, 01h=2M, 02h=4M, etc.)
  1331.  09h    WORD    supported memory speeds
  1332.  0Bh    WORD    supported memory types
  1333.  0Dh    BYTE    voltages supported by memory modules
  1334.         bits 7-3: reserved (0)
  1335.         bit 2: 2.9V
  1336.         bit 1: 3.3V
  1337.         bit 0: 5.0V
  1338.  0Eh    BYTE    number of memory slots
  1339.  0Fh  N WORDs    handles of memory information structures for each slot
  1340.     BYTE    (v2.1+) enabled error-correction capabilities
  1341. !!!ftp://download.intel.com/ial/wfm/smbios.pdf p.39
  1342. ---type 06h---
  1343.  04h    BYTE    string number for socket designation
  1344.  05h    BYTE    bank connections
  1345.  06h    BYTE    current memory speed in ns (00h = unknown)
  1346.  07h    WORD    current memory type
  1347.  09h    BYTE    installed size
  1348.  0Ah    BYTE    enabled size
  1349.  0Bh    BYTE    error status
  1350.         bits 7-3: reserved (0)
  1351.         bit 2: get error status info from event log (bits 1-0 reserved)
  1352.         bit 1: correctable errors encountered
  1353.         bit 0: uncorrectable errors encountered, some or all of module
  1354.               disabled
  1355. ---type 07h---
  1356.  04h    BYTE    string number of socket designation
  1357.  05h    WORD    cache configuration
  1358.  07h    WORD    maximum cache size
  1359.  09h    WORD    installed cache size
  1360.  0Bh    WORD    supported SRAM type(s)
  1361.  0Dh    WORD    current SRAM type
  1362.  0Fh    BYTE    (v2.1+) cache speed in ns (00h = unknown)
  1363.  10h    BYTE    (v2.1+) error correction type
  1364.  11h    BYTE    (v2.1+) system cache type
  1365.  12h    BYTE    (v2.1+) cache associativity
  1366. ---type 08h---
  1367. ------
  1368.  var    WORD    0000h end-of-structure marker
  1369.         (if strings are present, only a single byte of 00h is needed,
  1370.           because the terminating NUL of the last string forms the
  1371.           first    byte of the end-of-structure marker)
  1372. Note:    structures can have new fields added in successive revisions of the
  1373.       SMBIOS specification, so applications should use the actual length
  1374.       field given in the SMBIOS structure; as of SMBIOS v2.3, structure
  1375.       types also have a minimum length to enable the addition of optional
  1376.       fields
  1377. SeeAlso: #F0049
  1378.  
  1379. (Table F0060)
  1380. Values for SMBIOS structure type:
  1381.  00h    BIOS Information
  1382.  01h    System Information
  1383.  02h    Motherboard Information
  1384.  03h    system enclosure/chassis information
  1385.  04h    processor information
  1386.  05h    memory controller information
  1387.  06h    memory module information
  1388.  07h    cache information
  1389.  08h    port connector information
  1390.  09h    system slots
  1391.  0Ah    on-board devices
  1392.  0Dh    BIOS language
  1393.  0Eh    group associations
  1394.  0Fh    system event log
  1395.  10h    physical memory array
  1396.  11h    memory device information
  1397.  12h    memory error information
  1398.  13h    memory array mapped addresses
  1399.  14h    memory device mapped addresses
  1400.  15h    built-in pointing device information
  1401.  16h    portable battery
  1402.  17h    (v2.2+) system reset
  1403.  18h    (v2.2+) hardware security
  1404.  19h    (v2.2+) system power controls
  1405.  1Ah    (v2.2+) voltage probe
  1406.  1Bh    (v2.2+) cooling device
  1407.  1Ch    (v2.2+) temperature probe
  1408.  1Dh    (v2.2+) electrical current probe
  1409.  1Eh    (v2.2+) out-of-band remote access
  1410.  1Fh    (v2.3+) Boot Integrity Services (BIS) entry point
  1411.  20h    (v2.3+) system boot information
  1412.  21h    (v2.3+) 64-bit memory error information
  1413.  22h    (v2.3+) management device attributes
  1414.  23h    (v2.3+) management device component
  1415.  24h    (v2.3+) management device threshold information
  1416.  7Eh    inactive structure
  1417.  7Fh    end of structure table indicator
  1418. SeeAlso: #F0059
  1419.  
  1420. Bitfields for SMBIOS BIOS characteristics:
  1421. Bit(s)    Description    (Table F0061)
  1422.  63-48    reserved for system vendor
  1423.  47-32    reserved for BIOS vendor
  1424.  31    NEC PC-98
  1425.  30    supports INT 10 CGA/Mono video services
  1426.  29    supports INT 17 printer services
  1427.  28    supports INT 14 serial services
  1428.  27    supports INT 09 and 8042 keyboard services
  1429.  26    supports INT 05 print-screen
  1430.  25    supports INT 13 3.5-inch/2.88M floppy services
  1431.  24    supports INT 13 3.5-inch/720K floppy services
  1432.  23    supports INT 13 5.25-inch/1.2M floppy services
  1433.  22    supports INT 13 5.25-inch/360K floppy services
  1434.  21    supports INT 13 for Japanese Toshiba 1.2M floppy (3.5-inch, 360rpm)
  1435.  20    supports INT 13 for Japanese NEC 9800 1.2M floppy (3.5-inch, 1024-byte
  1436.       sectors, 360rpm)
  1437.  19    supports Enhanced Disk Drive specification
  1438.  18    supports booting from PC Card (PCMCIA)
  1439.  17    BIOS ROM is socketed
  1440.  16    supports selectable boot
  1441.  15    supports booting from CD-ROM
  1442.  14    ESCD support is available
  1443.  13    supports VL-VESA
  1444.  12    allows BIOS shadowing
  1445.  11    upgradeable (Flash) BIOS
  1446.  10    supports APM
  1447.  9    supports Plug-and-Play
  1448.  8    supports PC Card (PCMCIA)
  1449.  7    supports PCI
  1450.  6    supports EISA
  1451.  5    supports MCA
  1452.  4    supports ISA
  1453.  3    BIOS characteristics not supported
  1454.  2    characteristics unknown
  1455.  1-0    reserved
  1456. SeeAlso: #F0059,#F0062,#F0063
  1457.  
  1458. Bitfields for SMBIOS v2.1+ BIOS characteristics extension byte 1:
  1459. Bit(s)    Description    (Table F0062)
  1460.  7    Smart Battery supported
  1461.  6    supports booting from IEEE 1394 device
  1462.  5    supports booting from ATAPI ZIP drive
  1463.  4    supports booting from LS-120
  1464.  3    supports booting from I2O device
  1465.  2    supports AGP
  1466.  1    supports legacy USB
  1467.  0    supports ACPI
  1468. SeeAlso: #F0059,#F0061,#F0063
  1469.  
  1470. Bitfields for SMBIOS v2.3+ BIOS characteristics extension byte 2:
  1471. Bit(s)    Description    (Table F0063)
  1472.  7-1    reserved for future versions
  1473.  0    supports BIOS Boot Specification (see #F0074)
  1474. SeeAlso: #F0059,#F0061,#F0062
  1475.  
  1476. (Table F0064)
  1477. Values for SMBIOS wake-up type:
  1478.  00h    reserved
  1479.  01h    other
  1480.  02h    unknown wake-up method
  1481.  03h    APM timer
  1482.  04h    modem ring
  1483.  05h    LAN remote
  1484.  06h    power switch
  1485.  07h    PCI PME#
  1486.  08h    AC power restored
  1487. SeeAlso: #F0059
  1488.  
  1489. (Table F0065)
  1490. Values for SMBIOS Chassis Type:
  1491.  01h    other
  1492.  02h    chassis type not known
  1493.  03h    desktop
  1494.  04h    low-profile desktop
  1495.  05h    pizza box
  1496.  06h    mini tower
  1497.  07h    full tower
  1498.  08h    portable
  1499.  09h    laptop
  1500.  0Ah    notebook
  1501.  0Bh    handheld
  1502.  0Ch    docking station
  1503.  0Dh    all-in-one
  1504.  0Eh    sub-notebook
  1505.  0Fh    space-saving
  1506.  10h    lunch box
  1507.  11h    main server chassis
  1508.  12h    expansion chassis
  1509.  13h    subchassis
  1510.  14h    bus-expansion chassis
  1511.  15h    peripheral chassis
  1512.  16h    RAID chassis
  1513.  17h    rack-mount
  1514.  18h    sealed-case PC
  1515. SeeAlso: #F0059,#F0066,#F0067
  1516.  
  1517. (Table F0066)
  1518. Values for SMBIOS system enclosure/chassis state:
  1519.  01h    other
  1520.  02h    state not known
  1521.  03h    safe
  1522.  04h    warning
  1523.  05h    critical
  1524.  06h    non-recoverable
  1525. SeeAlso: #F0059,#F0065,#F0067
  1526.  
  1527. (Table F0067)
  1528. Values for SMBIOS system enclosure/chassis security status:
  1529.  01h    other
  1530.  02h    not known
  1531.  03h    none
  1532.  04h    external interface locked out
  1533.  05h    external interface enabled
  1534. SeeAlso: #F0059,#F0065,#F0066
  1535.  
  1536. (Table F0068)
  1537. Values for SMBIOS processor type:
  1538.  01h    other
  1539.  02h    unknown processor type
  1540.  03h    central processor
  1541.  04h    math processor
  1542.  05h    digital signal processor (DSP)
  1543.  06h    video processor
  1544. SeeAlso: #F0059,#F0069,#F0070,#F0071
  1545.  
  1546. (Table F0069)
  1547. Values for SMBIOS processor family:
  1548.  01h    other
  1549.  02h    unknown processor family
  1550.  03h    8086
  1551.  04h    80286
  1552.  05h    80386
  1553.  06h    80486
  1554.  07h    8087
  1555.  08h    80287
  1556.  09h    80387
  1557.  0Ah    80487
  1558.  0Bh    Pentium
  1559.  0Ch    Pentium Pro
  1560.  0Dh    Pentium II
  1561.  0Eh    Pentium-MMX
  1562.  0Fh    Celeron
  1563.  10h    Pentium II-Xeon
  1564.  11h    reserved for future Pentium (probably Pentium III)
  1565.  12h    Cyrix M1 family
  1566.  13h-18h reserved for future M1 versions
  1567.  19h    AMD K5 family
  1568.  1Ah-1Fh reserved for future K5 versions
  1569.  20h    PowerPC family
  1570.  21h    PowerPC 601
  1571.  22h    PowerPC 603
  1572.  23h    PowerPC 603+
  1573.  24h    PowerPC 604
  1574.  30h    DEC Alpha family (Pentium Pro for some v2.0 implementations)
  1575.  40h    MIPS family
  1576.  50h    Sun SPARC family
  1577.  60h    Motorola 68040 family
  1578.  61h    68xxx
  1579.  62h    68000
  1580.  63h    68010
  1581.  64h    68020
  1582.  65h    68030
  1583.  70h    Hobbit family
  1584.  80h    Weitek
  1585.  90h    Hewlett-Packard PA-RISC family
  1586.  A0h    NEC V30 family
  1587.  B0h    
  1588. SeeAlso: #F0059,#F0068
  1589.  
  1590. Bitfields for SMBIOS processor identification data:
  1591. Bit(s)    Description    (Table F0070)
  1592. ---x86 supporting CPUID---
  1593.  63-32    EDX returned by CPUID with EAX=1
  1594.  31-0    EAX returned by CPUID with EAX=1
  1595. ---x86 not supporting CPUID---
  1596.  63-16    reserved
  1597.  15-0    contents of DX at CPU reset
  1598. SeeAlso: #F0059,#F0068
  1599.  
  1600. Bitfields for SMBIOS processor voltage:
  1601. Bit(s)    Description    (Table F0071)
  1602.  7    =0 legacy mode
  1603.     =1 new mode
  1604. ---bit7=0---
  1605.  6-3    reserved (0)
  1606.  2    supports 2.9V
  1607.  1    supports 3.3V
  1608.  0    supports 5.0V
  1609. ---bit7=1---
  1610.  6-0    current CPU voltage * 10 (12h = 1.8V)
  1611. SeeAlso: #F0059,#F0068,#F0072
  1612.  
  1613. Bitfields for SMBIOS processor status:
  1614. Bit(s)    Description    (Table F0072)
  1615.  7    reserved (0)
  1616.  6    CPU socket is populated
  1617.  5-3    reserved (0)
  1618.  2-0    CPU status
  1619.     000 unknown
  1620.     001 CPU enabled
  1621.     010 CPU disabled by user (via BIOS setup)
  1622.     011 CPU disabled by BIOS (POST error)
  1623.     100 CPU idle
  1624.     101 reserved
  1625.     110 reserved
  1626.     111 other
  1627. SeeAlso: #F0059,#F0068,#F0071
  1628.  
  1629. (Table F0073)
  1630. Values for SMBIOS processor upgrade:
  1631.  01h    other
  1632.  02h    unknown processor upgrade
  1633.  03h    daughter board
  1634.  04h    ZIF socket
  1635.  05h    replaceable piggyback
  1636.  06h    none
  1637.  07h    LIF socket
  1638.  08h    Slot 1
  1639.  09h    Slot 2
  1640. SeeAlso: #F0059,#F0068
  1641.  
  1642. (Table F0074)
  1643. Call BIOS Boot Specification function 60h with:
  1644.     STACK:    WORD    0060h (function "Get Version and Installation Check")
  1645.         DWORD    -> WORD buffer for BIOS Boot Spec version number (BCD)
  1646. Return: AX = status (see #F0081)
  1647.        0081h if BIOS Boot not available
  1648. Note:    the large-model C declaration is
  1649.       int (*entry)(int, int *) ;
  1650. SeeAlso: #F0075,#F0076,#F0077,#F0078
  1651.  
  1652. (Table F0075)
  1653. Call BIOS Boot Specification function 61h "Get IPL Device Count" with:
  1654.     STACK:    WORD    0061h (function "Get IPL Device Count")
  1655.         DWORD    -> WORD buffer for number of IPL devices in system
  1656.         DWORD    -> WORD buffer for max. number of IPL devices supported
  1657.         DWORD    -> WORD buffer for size of an IPL table entry
  1658. Return: AX = status (see #F0081)
  1659. Note:    the large-model C declaration is
  1660.       int (*entry)(int, unsigned int *, unsigned int *, unsigned int *) ;
  1661. SeeAlso: #F0074,#F0076,#F0077,#F0078
  1662.  
  1663. (Table F0076)
  1664. Call BIOS Boot Specification function 62h with:
  1665.     STACK:    WORD    0062h (function "Get Boot Priority and IPL Table")
  1666.         DWORD    -> buffer for copy of boot priority stored in NVRAM
  1667.         DWORD    -> buffer for IPL table
  1668. Return: AX = status (see #F0081)
  1669. Notes:    the large-model C declaration is
  1670.       int (*entry)(int, unsigned char *, unsigned char *) ;
  1671.     the size of the boot priority buffer must be at least MaxIPL bytes
  1672.       (see #F0075), of which the first CurrentIPL bytes are valid, with
  1673.       the lowest-valued byte indicating the device which should attempt
  1674.       booting first, the next lowest second, etc.
  1675.     the size of the IPL table buffer must be at least MaxIPL + IPLsize
  1676.       bytes (see #F0075)
  1677. SeeAlso: #F0074,#F0075,#F0077,#F0078
  1678.  
  1679. (Table F0077)
  1680. Call BIOS Boot Specification function 63h "Set Boot Priority" with:
  1681.     STACK:    WORD    0063h (function "Set Boot Priority")
  1682.         DWORD    -> buffer containing new boot priority list (see #F0076)
  1683. Return: AX = status (see #F0081)
  1684. Note:    the large-model C declaration is
  1685.       int (*entry)(int, unsigned char *) ;
  1686. SeeAlso: #F0074,#F0075,#F0076,#F0078
  1687.  
  1688. (Table F0078)
  1689. Call BIOS Boot Specification function 64h with:
  1690.     STACK:    WORD    0064h (function "Get IPL Device from Last Boot")
  1691.         DWORD    -> WORD buffer for index in IPL table of boot device
  1692. Return: AX = status (see #F0081)
  1693. Note:    the large-model C declaration is
  1694.       int (*entry)(int, unsigned int *) ;
  1695. SeeAlso: #F0074,#F0075,#F0076,#F0077,#F0079
  1696.  
  1697. (Table F0079)
  1698. Call BIOS Boot Specification function 65h "Get Boot First" with:
  1699.     STACK:    WORD    0065h (function "Get Boot First")
  1700.         DWORD    -> WORD buffer for index in IPL table of current
  1701.               first boot device
  1702. Return: AX = status (see #F0081)
  1703. Notes:    the large-model C declaration is
  1704.       int (*entry)(int, unsigned int *) ;
  1705.     the boot-first device will attempt booting before the boot-priority
  1706.       list is considered
  1707. SeeAlso: #F0074,#F0075,#F0076,#F0077,#F0080
  1708.  
  1709. (Table F0080)
  1710. Call BIOS Boot Specification function 66h "Set Boot First" with:
  1711.     STACK:    WORD    0066h (function "Set Boot First")
  1712.         DWORD    -> WORD containing index in IPL table of new device
  1713.               from which to attempt booting first before
  1714.               considering the boot priority list
  1715. Return: AX = status (see #F0081)
  1716. Note:    the large-model C declaration is
  1717.       int (*entry)(int, 
  1718. SeeAlso: #F0074,#F0075,#F0076,#F0077,#F0079
  1719.  
  1720. (Table F0081)
  1721. Values for Plug-and-Play function status code:
  1722.  0000h    successful
  1723.  0001h    boot device resource configuration not saved to nonvolatile memory
  1724.  0002h-007Eh reserved for future warnings
  1725.  0055h    unable to read/write Extended System Config Data from nonvolatile mem
  1726.  0056h    no valid Extended System Configuration Data in nonvolatile storage
  1727.  0059h    user's buffer was too small for Extended System Configuration Data
  1728.  007Fh    device could not be configured statically, but dynamic config succeeded
  1729.  0081h    unknown function
  1730.  0082h    unsupported function
  1731.  0083h    invalid device node (or DMI structure) number/handle
  1732.  0084h    bad parameter
  1733.  0085h    failure setting device node
  1734.     invalid DMI/SMBIOS subfunction
  1735.  0086h    no pending events
  1736.  0087h    system not docked
  1737.     (SMBIOS) out of space to add data
  1738.  0088h    no ISA Plug-and-Play cards installed
  1739.  0089h    unable to determine docking station's capabilities
  1740.  008Ah    undocking sequence failed because system unit does not have a battery
  1741.  008Bh    resource conflict with a primary boot device
  1742.  008Ch    buffer provided by user was too small
  1743.  008Dh    must use ESCD support for specified device
  1744.     (SMBIOS) "set" request failed (one or more fields read-only)
  1745.  008Eh    message not supported
  1746.  008Fh    hardware error
  1747. ---SMBIOS v2.1+ ---
  1748.  0090h    locking not supported for the GPNV handle
  1749.  0091h    GPNV already locked
  1750.  0092h    invalid GPNV lock value
  1751. SeeAlso: #01243
  1752.  
  1753. Format of Option ROM header:
  1754. Offset    Size    Description    (Table F0082)
  1755.  00h    WORD    AA55h signature
  1756.  02h    BYTE    length of option ROM in 512-byte pages (should be multiple 4)
  1757.  03h  4 BYTEs    standard initialization entry point
  1758.         (called with ES:DI -> PnP Installation Structure)
  1759.  07h 19 BYTEs    reserved
  1760.  1Ah    WORD    offset to PnP Expansion Header
  1761.  
  1762. Format of Expansion Header:
  1763. Offset    Size    Description    (Table F0083)
  1764.  00h  4 BYTEs    signature ("$PnP" for Plug-and-Play expansion header)
  1765.  04h    BYTE    structure version number
  1766.  05h    BYTE    length of entire header in paragraphs
  1767.  06h    WORD    offset to next header or 0000h
  1768.  08h    BYTE    reserved
  1769.  09h    BYTE    checksum (sum of all bytes in header, including this one,
  1770.           mod 256 should equal zero)
  1771. ---PnP Expansion Header---
  1772.  0Ah    DWORD    Plug-and-Play device identifier
  1773.  0Eh    WORD    offset of manufacturer ID string in Option ROM or 0000h
  1774.  10h    WORD    offset of product name string in Option ROM or 0000h
  1775.  12h  3 BYTEs    device type code (see #F0085)
  1776.         byte 0: base type (general kind of device)
  1777.         byte 1: device subtype
  1778.         byte 2: device programming interface
  1779.  15h    BYTE    device indicator flags (see #F0084)
  1780.  16h    WORD    Boot Connection Vector offset (real/protected mode) or 0000h
  1781.         (see #F0089)
  1782.  18h    WORD    Disconnect Vector offset (real/protected mode) or 0000h
  1783.         far-called by system BIOS is boot attempt failed
  1784.  1Ah    WORD    bootstrap entry point (real/protected mode) or 0000h
  1785.  1Ch    WORD    reserved (0)
  1786.  1Eh    WORD    Static Resource Information offset (real/prot mode) or 0000h
  1787.         should be used only by non-PnP devices to make them PnP-aware
  1788.           (see #F0090)
  1789.  
  1790. Bitfields for Plug-and-Play device indicator flags:
  1791. Bit(s)    Description    (Table F0084)
  1792.  7    supports Device Driver Initialization model
  1793.  6    may be shadowed in RAM
  1794.  5    may be read cached
  1795.  4    only required if device used for booting
  1796.  3    reserved (0)
  1797.  2    device is Initial Program Load (IPL, i.e. boot) device
  1798.  1    device is Input device
  1799.  0    device is Display device
  1800. SeeAlso: #F0085
  1801.  
  1802. (Table F0085)
  1803. Values for Plug-and-Play device type code:
  1804. Type    Subtype        Description
  1805.  00h    ---    reserved
  1806.  01h    ---    mass storage
  1807.     00h      SCSI controller
  1808.     01h      IDE controller
  1809.             programming interface (see #F0087)
  1810.     02h      floppy controller (NEC 765-compatible)
  1811.     03h      IPI controller
  1812.     04h      RAID controller
  1813.     80h      other
  1814.  02h    ---    network interface controller
  1815.     00h      Ethernet
  1816.     01h      Token Ring
  1817.     02h      FDDI
  1818.     03h      ATM
  1819.     80h      other
  1820.  03h    ---    display controller
  1821.     00h      VGA
  1822.             programming interface 00h = VGA registers
  1823.             programming interface 01h = 8514/A-compatible registers
  1824.     01h      SuperVGA
  1825.     02h      XGA
  1826.     80h      other
  1827.  04h    ---    multi-media controller
  1828.     00h      video
  1829.     01h      audio
  1830.     80h      other
  1831.  05h    ---    memory
  1832.     00h      RAM
  1833.     01h      Flash memory
  1834.     80h      other
  1835.  06h    ---    bridge controller
  1836.     00h      host processor bridge
  1837.     01h      ISA bridge
  1838.     02h      EISA bridge
  1839.     03h      MicroChannel bridge
  1840.     04h      PCI bridge
  1841.     05h      PCMCIA bridge
  1842.     06h      NuBus bridge
  1843.     07h      CardBus bridge
  1844.     80h      other
  1845.  07h    ---    communications device
  1846.     00h      XT-compatible RS-232
  1847.     01h      AT-compatible parallel port
  1848.     80h      other
  1849.  08h    ---    system peripherals
  1850.     00h      8259-compatible Programmable Interrupt Controller
  1851.     01h      8237-compatible DMA Controller
  1852.     02h      8254-compatible system timer
  1853.     03h      real-time clock
  1854.     80h      other
  1855.  09h    ---    input device
  1856.     00h      keyboard controller
  1857.     01h      digitizer/pen
  1858.     02h      mouse
  1859.     80h      other
  1860.  0Ah    ---    docking station
  1861.     00h      generic docking station
  1862.     80h      other
  1863.  0Bh    ---    CPU
  1864.     00h      386-based
  1865.     01h      486-based
  1866.     02h      Pentium-based
  1867.     03h      Pentium-Pro (P6)
  1868.     10h      DEC Alpha
  1869.     40h      coprocessor
  1870.     80h      other
  1871.  0Ch    ---    Serial Bus controller
  1872.     00h      Firewire (IEEE 1394)
  1873.     01h      ACCESS.bus
  1874.     02h      SSA
  1875.     03h      Universal Serial Bus (USB)
  1876.             programming interface 10h = OpenHCI Host Controller
  1877.     04h      Fiber Channel
  1878.     80h      other
  1879. SeeAlso: #F0084,#F0086,#00878
  1880.  
  1881. (Table F0086)
  1882. Values for Plug-and-Play generic EISA device ID:
  1883.  PNP0xxx    system devices
  1884.  PNP00xx      interrupt controller
  1885.  PNP0000        AT interrupt controller
  1886.  PNP0001        EISA interrupt controller
  1887.  PNP0002        MCA interrupt controller
  1888.  PNP0003        APIC
  1889.  PNP0004        Cyrix SLiC MP interrupt controller
  1890.  PNP01xx      timer
  1891.  PNP0100        AT timer
  1892.  PNP0101        EISA timer
  1893.  PNP0102        MCA timer
  1894.  PNP02xx      DMA controller
  1895.  PNP0200        AT DMA controller
  1896.  PNP0201        EISA DMA controller
  1897.  PNP0202        MCA DMA controller
  1898.  PNP03xx      keyboard
  1899.  PNP0300        PC/XT keyboard controller (83-key)
  1900.  PNP0301        PC/AT keyboard controller (84-key)
  1901.  PNP0302        PC/XT keyboard controller (84-key)
  1902.  PNP0303        IBM enhanced keyboard (101/102-key, PS/2 mouse)
  1903.  PNP0304        Olivetti keyboard (83-key)
  1904.  PNP0305        Olivetti keyboard (102-key)
  1905.  PNP0306        Olivetti keyboard (86-key)
  1906.  PNP0307        enhanced keyboard with Windows keys
  1907.  PNP0308        General Input Device Emulation Interface (GIDEI) legacy
  1908.  PNP0309        Olivetti keyboard (A101/102-key)
  1909.  PNP030A        AT&T 302 keyboard
  1910.  PNP04xx      parallel port
  1911.  PNP0400        standard printer port
  1912.  PNP0401        ECP printer port
  1913.  PNP05xx      serial port
  1914.  PNP0500        standard 8250/16450 UART
  1915.  PNP0501        16550A-compatible UART
  1916.  PNP06xx      disk controller
  1917.  PNP0600        generic ESDI/IDE/ATA controller
  1918.  PNP0601        Plus Hardcard II
  1919.  PNP0602        Plus Hardcard IIXL/EX
  1920.  PNP0700      standard floppy controller
  1921.  PNP0800      PC speaker
  1922.  PNP09xx      display adapter
  1923.  PNP0900        VGA-compatible
  1924.  PNP0Axx      periperal bus
  1925.  PNP0A00        ISA
  1926.  PNP0A01        EISA
  1927.  PNP0A02        MCA
  1928.  PNP0A03        PCI
  1929.  PNP0A04        VESA/VL bus
  1930.  PNP0A05        generic ACPI bus
  1931.  PNP0A06        extended IO bus
  1932.  PNP0A07        SMB bus
  1933.  PNP0A08        ACPI three-wire device bus
  1934.  PNP0A09        ACPI two-wire device bus
  1935.  PNP0B00      AT-style real-time clock
  1936.  PNP0Cxx      BIOS/system board
  1937.  PNP0C00        Plug-and-Play BIOS
  1938.  PNP0C01        system board
  1939.  PNP0C02        (PnP-reserved resources)
  1940.  PNP0C03        Plug-and-Play event notification interrupt
  1941.  PNP0C04        math coprocessor
  1942.  PNP0C08        ACPI driver/BIOS
  1943.  PNP0C09        embedded controller device
  1944.  PNP0C0A        control method battery
  1945.  PNP0C0B        fan
  1946.  PNP0C0C        power button
  1947.  PNP0C0D        lid
  1948.  PNP0Exx      PCMCIA controller chipset
  1949.  PNP0E00        Intel 82365-compatible
  1950.  PNP0Fxx      mouse
  1951.  PNP8xxx    network adapter
  1952.  PNP9xxx    modem
  1953.  PNPAxxx    SCSI controller/proprietary CD-ROM controller
  1954.  PNPA000        Adaptec 154x-compatible
  1955.  PNPA001        Adaptec 174x-compatible
  1956.  PNPA002        Future Domain 16-700-compatible
  1957.  PNPBxxx    sound/video/multimedia
  1958.  PNPB000        Sound Blaster 1.5
  1959.  PNPB001        Sound Blaster 2.0
  1960.  PNPB002        Sound Blaster Pro
  1961.  PNPB004        Thunderboard
  1962.  PNPB005        Adlib-compatible FM synthesis
  1963.  PNPB006        MPU-401
  1964.  PNPB007        Microsoft Windows Sound System
  1965.  PNPB008        Compaq Waveform
  1966.  PNPB010        Motion Video device (MCI)
  1967.  PNPB011        MIDI Sequencer (MCI)
  1968.  PNPB012        Wave Audio (MCI)
  1969.  PNPB013        VISCA VCR (MCI)
  1970.  PNPB014        Pioneer Laserdisk (MCI)    
  1971.  PNPB015        CD Audio (MCI)
  1972.  PNPB020        Yamaha OPL3-compatible FM synthesis
  1973.  PNPB02F        joystick/game port
  1974.  ACPI0001    three-wire serial memory device
  1975.  ACPI0002    two-wire serial memory device
  1976. SeeAlso: #F0085,#F0088
  1977.  
  1978. Bitfields for Plug-and-Play IDE programming interface:
  1979. Bit(s)    Description    (Table F0087)
  1980.  7    bus mastering (read-only)
  1981.  6-4    reserved (read-only)
  1982.  3    secondary IDE mode bit is writable (read-only)
  1983.  2    secondary IDE mode (0 = legacy, 1 = native)
  1984.  1    primary IDE mode bit is writable (read-only)
  1985.  0    primary IDE mode (0 = legacy, 1 = native)
  1986. SeeAlso: #F0085
  1987.  
  1988. (Table F0088)
  1989. Values for data tags:
  1990.  22h    IRQ descriptor, no flags
  1991.  23h    IRQ descriptor, with flags
  1992.  2Ah    DMA descriptor
  1993.  30h    Dependent Function start
  1994.  31h    Dependent Function start, with priority byte
  1995.  38h    Dependent Function end
  1996.  47h    I/O port descriptor
  1997.  4Bh    fixed-location I/O port descriptor
  1998.  78h    "END_TAG" end of resource descriptors
  1999. SeeAlso: #F0086
  2000.  
  2001. (Table F0089)
  2002. Values Boot Connection Vector is called with:
  2003.     AX = which vectors to hook
  2004.        bit 2: connect as IPL (INT 13)
  2005.        bit 1: connect as primary video (INT 10)
  2006.        bit 0: connect as primary input (INT 09)
  2007.     ES:DI -> system BIOS PnP Installation Check Structure
  2008.     BX = Card Select Number for this card (ISA bus only)
  2009.     DX = read data port (ISA only) or FFFFh
  2010. SeeAlso: #F0090
  2011.  
  2012. (Table F0090)
  2013. Values Static Resource Information vector is called with:
  2014.     ES:DI -> buffer for device's static resource config info (at least 1024
  2015.           bytes)
  2016. SeeAlso: #F0089
  2017.  
  2018. Format of Plug-and-Play System Device Node:
  2019. Offset    Size    Description    (Table F0091)
  2020.  00h    WORD    size of device node in bytes
  2021.  02h    BYTE    device node number/handle
  2022.  03h    DWORD    EISA product identifier
  2023.  07h  3 BYTEs    device type code
  2024.  0Ah    WORD    attribute flags
  2025.         bits 15-9 reserved (0)
  2026.         bits 8-7: configurability
  2027.             00 can only be statically configured for next boot
  2028.             01 can be dynamically configured at runtime
  2029.             10 reserved
  2030.             11 can only be dynamically configured
  2031.         bit 6: removable device
  2032.         bit 5: docking station
  2033.         bit 4: capable of being primary IPL (boot) device
  2034.         bit 3: capable of being primary input device
  2035.         bit 2: capable of being primary output device
  2036.         bit 1: device is not configurable
  2037.         bit 0: device can not be disabled
  2038.  0Ch    var    allocated resource configuration descriptors
  2039.     var    possible resource configuration descriptors
  2040.     var    compatible device identifiers
  2041. --------m-@xxxxxxxx--------------------------
  2042. CALL xxxxh:xxxxh - POST Memory Manager Specification (PMM) v1.0
  2043. InstallCheck:    scan paragraph boundaries E000h to FFFFh for signature string
  2044.       "$PMM" followed by a valid PMM header structure (see #F0092)
  2045. Note:    the PMM is only available at system boot -- between the completion
  2046.       of the memory check and the call to INT 19; this includes Option
  2047.       ROM initialization and Plug-and-Play Boot Connection Vectors, but
  2048.       not the Bootstrap Entry Vector (which is called after INT 19)
  2049. SeeAlso: INT 2F/AX=4300h,INT 67/AH=40h
  2050.  
  2051. Format of POST Memory Manager Specification structure:
  2052. Offset    Size    Description    (Table F0092)
  2053.  00h  4 BYTEs    signature "$PMM"
  2054.  04h    BYTE    structure version number (01h)
  2055.  05h    BYTE    length of structure in bytes
  2056.  06h    BYTE    checksum of structure (value needed to force byte-wise sum
  2057.         of entire structure to be 00h)
  2058.  07h    DWORD    -> PMM entry point (real mode only) (see #F0093)
  2059.  0Bh  5 BYTEs    reserved (0)
  2060. SeeAlso: #F0024
  2061.  
  2062. (Table F0093)
  2063. Call POST Memory Manager Specification entry point with:
  2064.     STACK:    WORD    function number
  2065.             0000h pmmAllocate (see #F0094)
  2066.             0001h pmmFind (see #F0095)
  2067.             0002h pmmDeallocate (see #F0096)
  2068.         additional parameters vary by function
  2069. Notes:    PMM calls use standard large-model C-language calling conventions
  2070.     the caller must provide at least 256 bytes of stack space; BIOSes
  2071.       which support this specification will provide at least 1024 bytes
  2072.       of stack space when calling a ROM initialization vector, Boot
  2073.       Connection Vector, or Bootstrap Entry Vector (thus allowing the
  2074.       Option ROM's code to provide sufficient stack space when calling
  2075.       the PMM)
  2076.  
  2077. (Table F0094)
  2078. Call PMM "pmmAllocate" entry point with:
  2079.     STACK:    WORD    0000h (function "pmmAllocate")
  2080.         DWORD    length of memory block, in paragraphs
  2081.             if 00000000h, only get size of largest available block
  2082.         DWORD    handle to assign to memory block, or FFFFFFFh for
  2083.               "anonymous" block
  2084.         WORD    option flags
  2085.             bit 0: allocate from conventional memory
  2086.             bit 1: allocate from extended memory
  2087.             bit 2: use alignment based on least-significant set
  2088.                 bit of requested length
  2089. Return: DX:AX = 32-bit physical address of allocated memory block, or
  2090.           size of largest available block in paragraphs, or
  2091.           00000000h if specified handle is already in use, or
  2092.           FFFFFFFFh if allocation failed
  2093. Notes:    at least one of bits 0 and 1 must be set in the option flags; both
  2094.       may be set if the location of the memory block is not important
  2095.     the specification requires that an Option ROM must use handles
  2096.       compliant with the Plug-and-Play specification (high 16 bits are
  2097.       manufacturer's vendor ID, low 16 bits are vendor-defined); handles
  2098.       whose highest bit is set or highest six bits are all clear are
  2099.       reserved for the BIOS, and the BIOS may flag attempts to use such
  2100.       reserved handles
  2101. SeeAlso: #F0093,#F0095,#F0096
  2102.  
  2103. (Table F0095)
  2104. Call PMM "pmmFind" entry point with:
  2105.     STACK:    WORD    0001h (function "pmmFind")
  2106.         DWORD    handle to be found
  2107. Return: DX:AX = 32-bit physical address of allocated memory block, or
  2108.           00000000h if handle is not in use
  2109. Desc:    get the address of the memory block associated with the given handle
  2110. SeeAlso: #F0093,#F0094,#F0096
  2111.  
  2112. (Table F0096)
  2113. Call PMM "pmmDeallocate" entry point with:
  2114.     STACK:    WORD    0002h (function "pmmDeallocate")
  2115.         DWORD    physical address of block (as returned by pmmAllocate)
  2116. Return: DX:AX = FFFFFFFFh on error
  2117. Notes:    the memory block is cleared to all zeros by the PMM
  2118.     invalid functions (0003h-FFFFh) return DX:AX = FFFFFFFFh
  2119. SeeAlso: #F0093,#F0094,#F0095
  2120. --------b-@xxxxxxxx--------------------------
  2121. CALL xxxxh:xxxxh - BIOS Boot Specification (BBS)
  2122. InstallCheck:    perform Plug-and-Play installation check, then call PnP
  2123.       function 60h
  2124. SeeAlso: @xxxxh:xxxxh"Plug-and-Play"
  2125. --------m-@xxxxxxxx--------------------------
  2126. CALL xxxxh:xxxxh - QEMM Programming Interface (QPI)
  2127. InstallCheck:    see INT 67/AH=3Fh
  2128. SeeAlso: INT 67/AH=3Fh
  2129. --------m-@xxxxxxxx--------------------------
  2130. CALL xxxxh:xxxxh - QEXT.SYS Private API
  2131. InstallCheck:    see INT 15/AX=11DEh
  2132. SeeAlso: INT 15/AX=11DEh
  2133. --------m-@xxxxxxxx--------------------------
  2134. CALL xxxxh:xxxxh - Quarterdeck VIDRAM
  2135. InstallCheck:    see INT 2F/AX=D201h/BX=5649h
  2136. SeeAlso: INT 2F/AX=D201h/BX=5649h
  2137. --------s-@xxxxxxxx--------------------------
  2138. CALL xxxxh:xxxxh - SoundBlaster Speech Driver
  2139. InstallCheck:    see INT 2F/AX=FBFBh
  2140. SeeAlso: INT 2F/AX=FBFBh
  2141. --------k-@xxxxxxxx--------------------------
  2142. CALL xxxxh:xxxxh - Stacker
  2143. InstallCheck:    see INT 2F/AX=4A12h/CX=5354h
  2144. SeeAlso: INT 2F/AX=4A12h/CX=5354h
  2145. --------s-@xxxxxxxx--------------------------
  2146. CALL xxxxh:xxxxh - VESA Audio Interface Driver
  2147. InstallCheck:    see INT 10/AX=4F13h/BX=0002h
  2148. SeeAlso: INT 10/AX=4F13h/BX=0002h
  2149. --------m-@xxxxxxxx--------------------------
  2150. CALL xxxxh:xxxxh - Virtual Control Program Interface (VCPI) - Protected-Mode
  2151. InstallCheck:    see INT 67/AX=DE01h
  2152. SeeAlso: INT 67/AX=DE01h
  2153. --------N-@xxxxxxxx--------------------------
  2154. CALL xxxxh:xxxxh - WEB v4.02 - MODULE APIs
  2155. InstallCheck:    see INT 2F/AH=EEh
  2156. SeeAlso: INT 2F/AH=EEh
  2157. ---------------------------------------------
  2158.  
  2159. ----------@xxxxxxxx--------------------------
  2160. CALL xxxxh:xxxxh - 
  2161. InstallCheck:    
  2162. SeeAlso: 
  2163. --------!---Admin----------------------------
  2164. Highest Table Number = F0096
  2165. --------!---FILELIST-------------------------
  2166. Please redistribute all of the files comprising the interrupt list (listed at
  2167. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  2168. quartet of archives named INTER60A through INTER60D (preferably the original
  2169. authenticated PKZIP archives), and the utility and hypertext conversion
  2170. programs in three additional archives called INTER60E.ZIP to INTER60G.ZIP
  2171.  
  2172. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  2173. --------!---CONTACT_INFO---------------------
  2174. Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
  2175. FIDO: Ralf Brown 1:129/26.1
  2176.